我有一个具有一些属性的课程R
。
同样地,我有一个DataTable
dt
,其列与类R
的属性完全相同
我正在尝试根据DataTables
的其中一列上的条件,从上述DataTable
dt
创建2个不同的dt
。
我希望将这两个Datatables
转换为List
个R
个对象。
这就是我现在正在尝试的进展:
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();
答案 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();