我有一个疑问,有时候我做了从DataTableList<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();
}

10-01 23:50