【问题标题】:Cannot convert type 'System.Data.EnumerableRowCollection<System.Data.DataRow>' to generic.list<T>无法将类型“System.Data.EnumerableRowCollection<System.Data.DataRow>”转换为 generic.list<T>
【发布时间】:2017-09-25 13:35:06
【问题描述】:

我有一个类 R 有一些属性。

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

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

我想将这 2 个 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));

但是它会抛出一个错误:

无法将类型“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)

标签: c# linq datatable


【解决方案1】:

您的Where 语句正在返回EnumerableRowCollection&lt;DataRow&gt;。您需要从查询中选择 ListR 以使其正常工作:

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

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多