无法转换类型&#39; System.Data.EnumerableRowCollection <system.data.datarow>&#39;到generic.list <t>

时间:2017-09-25 13:35:06

标签: c# linq datatable

我有一个具有一些属性的课程R

同样地,我有一个DataTable dt,其列与类R的属性完全相同

我正在尝试根据DataTables的其中一列上的条件,从上述DataTable dt创建2个不同的dt

我希望将这两个Datatables转换为ListR个对象。

这就是我现在正在尝试的进展:

List<R> Sheet1 = dt.AsEnumerable()
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) <= Convert.ToDecimal(80));

List<R> Sheet2 = dt.AsEnumerable()
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) > Convert.ToDecimal(80));

但它引发了一个错误:

  

无法转换类型&#39; System.Data.EnumerableRowCollection&#39;到generic.list

我尝试过各种各样的演员但没有用:

List<R> Sheet1 = (List<R>)dt.AsEnumerable()
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) <= Convert.ToDecimal(80));

List<R> Sheet2 = (List<R>)dt.AsEnumerable()
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) > Convert.ToDecimal(80));
List<R> Sheet1 = (List<R>)dt.AsEnumerable()
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) <= Convert.ToDecimal(80))
    .ToList();

List<R> Sheet2 = (List<R>)dt.AsEnumerable()
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) > Convert.ToDecimal(80))
    .ToList();

1 个答案:

答案 0 :(得分:2)

您的Where语句正在返回EnumerableRowCollection<DataRow>。您需要从查询中选择List R才能使其正常工作:

List<R> Sheet1 = dt.AsEnumerable().
      Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) <= Convert.ToDecimal(80))
     .Select(c => new R 
      { SomeDecimalColumn = Convert.ToDecimal(c["SomeDecimalColumn"]) /*other propertie*/ })
     .ToList();