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