我有一个疑问,有时候我做了从DataTable
到List<T>
的转换:
List<EDog> lstDogs = (from drRow in dsDogs.Tables[0].AsEnumerable()
select new EDog()
{
intIdDog = drRow.Field<int>("IdDog"),
intIdOwner = drRow.Field<int?>("IdOwner"),
intAge = drRow.Field<int>("Age"),
strName = drRow.Field<string>("Name")
}).ToList();
这个工作很好,但是现在我正在考虑使其通用,以便任何类型的DataSet都可以转换为强类型列表。
如何使它通用?也许是代表围绕这部分并创建对象?
new EDog()
{
intIdDog = drRow.Field<int>("IdDog"),
intIdOwner = drRow.Field<int?>("IdOwner"),
intAge = drRow.Field<int>("Age"),
strName = drRow.Field<string>("Name")
}
我试过了,但是得到一个错误:
select (lambda) expected....
有什么建议吗?
我之所以需要这样做,是因为需要将结果的每个DataRow都转换为一个Entity,以便进行更好的操作。
最佳答案
您正在寻找类似这样的东西吗?
public static List<T> ConvertDS<T>(DataSet ds, Converter<DataRow, T> converter)
{
return
(from row in ds.Tables[0].AsEnumerable()
select converter(row)).ToList();
}