.net - 使用字段子字符串通过 Linq to DataSet 对 DataTable 进行排序

标签 .net linq linq-to-dataset

我想使用两个排序值通过 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()

最佳答案

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

关于.net - 使用字段子字符串通过 Linq to DataSet 对 DataTable 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904854/

相关文章:

c# - 如何使用 .NET 以编程方式将信息发送到 C# 中的 Web 服务?

C# 获取调用程序集的父程序集名称

.net - FOR XML 要求的无效 XML 标识符

sql-server - 如何在 LINQ 中执行此 SQL

c# - Linq .Select()/.SelectMany() 自动使用第二个可选参数

.net - LINQ-在可为空的列上连接表

.net - ASP.NET Core RC2 作为 linux 守护进程

c# - 使用 LINQ 在多个属性中查找重复项

c# - 类型化和非类型化数据集的 LINQ 和性能?

c# - AsEnumerable().Take