Python 调用C# dll,处理返回数据DataSet
结果显示
![在这里插入图片描述](https://img-blog.csdnimg.cn/cb8768d2ec8d4400ada8c5ab087950fc.png)
创建C# 类库
- 创建C# 类库,创建类 YC.DataSet_Demo.dll,类:DemoPlugIn.cs
- 创建返回空DataSet的方法
public DataSet Retrun_Null()
{
return null;
}
- 创建非静态方法返回DataSet
public DataSet Retrun_DataSet(int Num)
{
return GetDataset(Num);
}
- 创建 静态方法 返回DataSet
public static DataSet GetDataset(int Num)
{
var ds = new DataSet();
var dt = GetTableSchema();
for (int i = 1; i <= Num; i++)
{
DataRow dr = dt.NewRow();
dr["Name"] = "张三" + i + "号";
dr["Age"] = 18;
dr["Say"] = "我是张三的第" + i + "个克隆体";
dr["Add_Time"] = DateTime.Now;
dt.Rows.Add(dr);
Thread.Sleep(10);
}
ds.Tables.Add(dt);
return ds;
}
Python 调用代码
clr.AddReference("YC.DataSet_Demo")
from YC.DataSet_Demo import *
非空验证
pulgin = DemoPlugIn()
ds = pulgin.Retrun_Null()
if ds is None:
print('ds 是空集合')
else:
print(' ds 是非空集合')
静态方法调用
num = 10
ds2 = DemoPlugIn.GetDataset(num)
if ds2 is not None:
list(map(lambda x: print_Model(x), ds2.Tables[0].Rows))
print(f' 静态方法,克隆成功 {ds1.Tables[0].Rows.Count} 个张三')
非静态方法调用,lambda 处理 dataset
num = 10
print(f' 我是张三,我要克隆 {num} 个自己')
ds1 = pulgin.Retrun_DataSet(num)
if ds1 is not None:
list(map(lambda x: print_Model(x), ds1.Tables[0].Rows))
print(f' 非静态方法,克隆成功 {ds1.Tables[0].Rows.Count} 个张三')
def print_Model(row):
print(f'Hi,我是 {row["Name"]},年龄 {row["Age"]},创建日期 {row["Add_Time"]},{row["Say"]}')
time.sleep(0.1)