3

我正在尝试将数据表转换为通用列表。我正在关注这篇文章。DataTable 到 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

我无法弄清楚是什么问题。

4

3 回答 3

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();
于 2013-06-16T03:26:50.977 回答
0

在您的return中,您试图再次调用该方法,但您正在传递rows,这是一个List<DataRow>. 您的方法需要 a DataTable,因此它告诉您您错误地调用了您的方法。

从理论上讲,您应该制作 aList<MProps>并返回它,而不是制作 aList<DataRow>并调用TableToList。也许制作一个DataRowToMProp方法并为每个调用它DataRow

于 2013-06-16T03:26:03.997 回答
0
var lst = from x in dt.AsEnumerable() 
where x.Field <string>("PersonName") == "ching" select x;
于 2013-06-16T03:30:16.580 回答