【问题标题】:Ordering a DataTable with Linq to DataSet using field substrings使用字段子字符串对带有 Linq 到 DataSet 的 DataTable 进行排序
【发布时间】:2011-10-26 15:18:07
【问题描述】:

我想使用两个排序值订购一个带有 Linq to DataSet 的 DataTable。然而,这两个值来自于拆分和解析同一个字段(不要问我为什么!)。

我尝试过这样做:

var query = from row in dtReports.AsEnumerable()
            orderby row.Field<string>("ReportNumber").Substring(0,4),
                int.Parse(row.Field<string>("ReportNumber").Substring(5))
            select row

DataTable dt = query.AsDataView().ToTable()

但我得到“使用投影后无法创建 DataView”。

然后我也尝试了:

var query = from element in (
                from row in dtReports.AsEnumerable()
                let year = row.Field<string>("ReportNumber").Substring(0, 4)
                let num = int.Parse(row.Field<string>("ReportNumber").Substring(5))
                select row, year, num)
            orderby element.year, element.num
            select element.row

DataTable dt = query.AsDataView().ToTable()

我不断收到同样的错误。

这是怎么做到的?


我要感谢大家的回答。最终的解决方案很简单:

var query = from row in dtReports.AsEnumerable()
            let year = row.Field<string>("ReportNumber").Substring(0, 4)
            let num = int.Parse(row.Field<string>("ReportNumber").Substring(5))
            orderby year, num
            select row

DataTable dt = query.CopyToDataTable()

【问题讨论】:

  • 您可以使用CopyToDataTable 从DataRows 创建一个新的DataTable。

标签: .net linq linq-to-dataset


【解决方案1】:
var query = dtReports.AsEnumerable()
              .OrderBy(x => x.Field<string>("ReportNumber").Substring(0, 4))
              .ThenBy(x => x.Field<string>("ReportNumber").Substring(5));
var dt = query.CopyToDataTable<DataRow>();

【讨论】:

  • 它与 OP 的代码有何不同?它基本上是相同的查询,使用 lambda 语法而不是查询理解语法...
【解决方案2】:

你可以使用CopyToDataTable:

DataTable dt = query.CopyToTable()

【讨论】:

    【解决方案3】:

    看看这个, http://msdn.microsoft.com/en-us/library/bb386921.aspx 希望这就是您要找的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      相关资源
      最近更新 更多