C# List<`a>这种匿名类怎么传递给其他方法
我通过ORM从数据库取出数据:
public static object GetDtl()
{
using (var db = new EfDb())
{
var query = from scd in db.INV_STOCK_CHECK_DTL
from sm in db.SFC_MITEM.LeftJoin(e => e.ORG_ID == OrgId && e.ENTERPRISE_ID == EnterpriseId && e.ID == scd.MITEM_ID)
where scd.ORG_ID == OrgId && scd.ENTERPRISE_ID == EnterpriseId && scd.BILL_NO == billno
select new
{
sm.MITEM_CODE,
sm.MITEM_DESC,
sm.UOM,
scd.WAREHOUSE_CODE,
scd.LOC_CODE,
scd.DISTRICT_CODE,
scd.CHECK_QTY,
scd.ONHAND_QTY,
scd.DIFF_REASON,
scd.ID
};
var data = query.Skip(start).Take(length).ToList();
GetDefData(data );
}
}
以上代码可以看到查询出来的结果data是List<`a>这种匿名类;
如图:
我想将这个data传递给另外一个方法GetDefData(data )处理;但是这个方法不知道用什么类来接data
public static object GetDefData(List<`a>data )
{
}
望采纳,有问题再交流
可以在匿名类前面加上类型声明,然后使用 var 关键字声明一个新的变量来存储匿名类的实例,例如:
var data = query.Skip(start).Take(length).ToList();
List<dynamic> defData = data;
GetDefData(defData);
上述代码使用了动态类型 dynamic,它可以存储任意类型的值,但是在运行时会有一些性能损失。如果你确定这个匿名类中包含了哪些字段,你可以使用明确的类型来声明新的变量,例如:
var data = query.Skip(start).Take(length).ToList();
List<SomeType> defData = data;
GetDefData(defData);
上述代码SomeType 应该具有与匿名类相同的字段。
如果你的匿名类包含的字段很多,你也可以使用一个类或者结构体来声明新的变量。例如:
var data = query.Skip(start).Take(length).ToList();
List<SomeClassOrStruct> defData = data;
GetDefData(defData);