我想使用两个排序值为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()
答案 0 :(得分:3)
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>();
答案 1 :(得分:2)
您可以使用CopyToDataTable:
DataTable dt = query.CopyToTable()
答案 2 :(得分:0)
看看这个, http://msdn.microsoft.com/en-us/library/bb386921.aspx 希望这是你在找什么?