【问题标题】:Converting DataTable to Generic List<T>将 DataTable 转换为通用列表<T>
【发布时间】:2013-06-16 03:22:20
【问题描述】:

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

我不知道是什么问题。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    使用

    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();
    

    【讨论】:

      【解决方案2】:

      在您的return 中,您尝试再次调用该方法,但您传递了rows,这是一个List&lt;DataRow&gt;。你的方法需要一个DataTable,所以它告诉你你的方法调用不正确。

      理论上,您应该创建一个List&lt;MProps&gt; 并返回它,而不是创建一个List&lt;DataRow&gt; 并调用TableToList。也许制作一个DataRowToMProp 方法并为每个DataRow 调用它?

      【讨论】:

        【解决方案3】:
        var lst = from x in dt.AsEnumerable() 
        where x.Field <string>("PersonName") == "ching" select x;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-07
          • 2018-11-20
          • 1970-01-01
          • 1970-01-01
          • 2011-01-17
          • 2011-03-24
          相关资源
          最近更新 更多