How to convert List <dynamic> to list <OurClass> in C #
I create a dynamic list at runtime, and after execution I need to assign a list to class properties
List<tblchargemaster> charge = new List<tblchargemaster>();
charge = (List<tblchargemaster>) ObjDB.SelectQuery("tblchargemaster");
tblchargemaster- the type of the class, and the function SelectQueryreturns List<dynamic>. How to convert this dynamic list to a list with my class type?
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;
}
And the general class
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;
}
}
+4
2 answers
Edited because explicit conversion from dynamic to strong type is not supported.
var charge = ObjDB.SelectQuert("tblchargemaster").Cast<tblchargemaster>();
becomes:
var charge = ObjDB.SelectQuert("tblchargemaster").Select(CastDynamicTo<tblchargemaster>)
while CastDynamicTo<tblchargemaster>implemented using Is there a way to convert a dynamic or anonymous object to a strongly typed declared object?
+6