【发布时间】: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