如何转换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;
    }
}

如何转换List<dynamic>List< OurClass>在c#

已编辑,因为不支持从动态类型显式强制转换为强类型

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>());
相关文章: