如何转换ListList< OurClass>在c#
本文关键字:List 何转换 OurClass dynamic 转换 | 更新日期: 2023-09-27 18:03:09
我在运行时创建了一个动态列表,执行后我需要将列表分配给我的类属性
List<tblchargemaster> charge = new List<tblchargemaster>();
charge = (List<tblchargemaster>) ObjDB.SelectQuery("tblchargemaster");
tblchargemaster
是类类型,SelectQuery
函数返回List<dynamic>
。如何将此动态列表转换为具有我的类类型的列表?
public List<dynamic> SelectQuert(string TableName)
{
Conn.Open();
DataTable dt = new DataTable("map");
string Query = "Select * from " + TableName;
MySqlDataAdapter dr = new MySqlDataAdapter(Query, Conn);
dr.Fill(dt);
List<dynamic> dynamicDt = dt.ToDynamic();
Conn.Close();
return dynamicDt;
}
泛型类是
public static class DataTableExtensions
{
public static List<dynamic> ToDynamic(this DataTable dt)
{
var dynamicDt = new List<dynamic>();
foreach (DataRow row in dt.Rows)
{
dynamic dyn = new ExpandoObject();
foreach (DataColumn column in dt.Columns)
{
var dic = (IDictionary<string, object>)dyn;
dic[column.ColumnName] = row[column];
dynamicDt.Add(dyn);
}
}
return dynamicDt;
}
}
已编辑,因为不支持从动态类型显式强制转换为强类型
var charge = ObjDB.SelectQuert("tblchargemaster").Cast<tblchargemaster>();
就变成:
var charge = ObjDB.SelectQuert("tblchargemaster").Select(CastDynamicTo<tblchargemaster>)
而CastDynamicTo<tblchargemaster>
是通过帮助实现的是否有一种方法将动态或匿名对象转换为强类型的声明对象?
使用Cast<tblchargemaster>()
方法:
List<tblchargemaster> charge = new List<tblchargemaster>();
charge = charge.AddRange(
ObjDB.SelectQuert("tblchargemaster").Cast<tblchargemaster>());