【发布时间】:2017-09-25 13:35:06
【问题描述】:
我有一个类 R 有一些属性。
同样,我有一个 DataTable dt 的列与 R 类的属性完全相同
我正在尝试根据dt 的一列上的条件从上述DataTable dt 创建2 个不同的DataTables。
我想将这 2 个 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));
但是它会抛出一个错误:
无法将类型“System.Data.EnumerableRowCollection”转换为 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();
【问题讨论】:
-
这里的
R是什么?尝试使用st.Select方法或使用var而不是 List -
什么是
R?如果它不是System.Data.Row的子类,则需要编写代码以从现有System.Data.Row初始化新的R。选角不是魔术。当您将 A 转换为 B 时,A 必须成为 B,或者必须调用某些代码将 A 转换为 B。 -
你真的有像
R这样的课程吗?没有更短的名字?我猜你的第一堂课是A -
@TimSchmelter 我已将 R 用于代表性目的,因为我不想违反我公司的政策。
-
@S.Akbari 谢谢,那行得通。我确实有另一个问题,我们如何对数据视图的数字列进行排序?我正在使用 dv.Sort()="mynumericcolumnname desc" 但它仅按字符串排序(即 9 排在第一位而不是 10)