linq - How to join two tables using c# 4.0? -
i have same issue here linq join 2 datatables datatables made on runtime like
datatable dttml = (datatable)jsonconvert.deserializeobject(convert.tostring(data.json.args[0]["tml"]), (typeof(datatable)));
the solution gave fine getting error on datarows2 at
select dtresult.loaddatarow(new object[] { datarows2.field<int>("stock") // here error : not exist in current context }
while datarows1.field(s) fine
i can't see what's wrong approach :
datatable dt1 = new datatable(); dt1.columns.add("pk", typeof(int)); dt1.columns.add("data1", typeof(int)); datatable dt2 = new datatable(); dt2.columns.add("fk", typeof(int)); dt2.columns.add("data2", typeof(int)); dt2.rows.add(1, 5000); dt1.rows.add(1, 1000); var result = (from r1 in dt1.asenumerable() join r2 in dt2.asenumerable() on r1["pk"] equals r2["fk"] select new { = r1.field<int>("data1"), b = r2.field<int>("data2"), // choose more columns if }).tolist();
you can whatever want using it. if need result datatable , use method [ listtodatatable ] convert list datatable:
public static datatable listtodatatable<t>(list<t> items) { system.componentmodel.propertydescriptorcollection properties = system.componentmodel.typedescriptor.getproperties(typeof(t)); datatable table = new datatable(); foreach (system.componentmodel.propertydescriptor prop in properties) table.columns.add(prop.name, nullable.getunderlyingtype(prop.propertytype) ?? prop.propertytype); foreach (t item in items) { datarow row = table.newrow(); foreach (system.componentmodel.propertydescriptor prop in properties) row[prop.name] = prop.getvalue(item) ?? dbnull.value; table.rows.add(row); } return table;
Comments
Post a Comment