我正在尝试将Data表转换为通用List。我正在关注这篇文章。 DataTable to List<object>。
Method is
public static List<MProps> TableToList<T1>(DataTable dt)
{
if (dt == null)
{
return null;
}
List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in dt.Rows)
{
rows.Add(row);
}
return TableToList<T1>(rows);
}
I keep getting two errors at "return TableToList<T1>(rows);" Saying
Error 24 Argument 1: cannot convert from 'System.Collections.Generic.List<System.Data.DataRow>' to 'System.Data.DataTable' C:\Users..\Program.cs
AND
Error 23 The best overloaded method match for 'xx.Program.TableToList<T1>(System.Data.DataTable)' has some invalid arguments C:\Users\--\Program.cs
我无法弄清楚问题是什么。
答案 0 :(得分:2)
使用
List<DataRow> rows = dt.AsEnumerable().ToList();
如果您需要返回List
return (from DataRow row in dt.Rows
select new MProps
{
//assign properties here
prop1 = row["colname"].ToString()
}).ToList();
答案 1 :(得分:0)
在return
中,您尝试再次调用该方法,但是您传递rows
,这是List<DataRow>
。您的方法需要DataTable
,因此它会告诉您正确调用方法。
理论上,你应该制作一个List<MProps>
然后返回,而不是制作List<DataRow>
并致电TableToList
。也许制作一个DataRowToMProp
方法并为每个DataRow
调用它?
答案 2 :(得分:0)
var lst = from x in dt.AsEnumerable()
where x.Field <string>("PersonName") == "ching" select x;