我想使用两个排序值订购一个带有 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()