.net 使用字段子字符串将具有Linq的DataTable排序为DataSet
我想使用两个排序值对具有Linq to DATASE的数据表进行排序。但是,这两个值来自于对同一字段的拆分和解析(不要问我为什么!) 我试着这样做:.net 使用字段子字符串将具有Linq的DataTable排序为DataSet,.net,linq,linq-to-dataset,.net,Linq,Linq To Dataset,我想使用两个排序值对具有Linq to DATASE的数据表进行排序。但是,这两个值来自于对同一字段的拆分和解析(不要问我为什么!) 我试着这样做: var query = from row in dtReports.AsEnumerable() orderby row.Field<string>("ReportNumber").Substring(0,4), int.Parse(row.Field<string>(
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()
var query=来自dtReports.AsEnumerable()中的行
orderby row.字段(“ReportNumber”).子字符串(0,4),
int.Parse(行字段(“ReportNumber”).子字符串(5))
选择行
DataTable dt=query.AsDataView().ToTable()
但我得到“使用投影后无法创建数据视图”
然后我还尝试了:
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中的元素(
来自dtReports.AsEnumerable()中的行
let year=行字段(“ReportNumber”)。子字符串(0,4)
让num=int.Parse(row.Field(“ReportNumber”).Substring(5))
选择行、年、数)
orderby element.year,element.num
选择element.row
DataTable dt=query.AsDataView().ToTable()
我一直都会犯同样的错误
这怎么可能呢
我要感谢你们所有人的回答。最终的解决方案非常简单:
var query=来自dtReports.AsEnumerable()中的行
let year=行字段(“ReportNumber”)。子字符串(0,4)
让num=int.Parse(row.Field(“ReportNumber”).Substring(5))
按年份排序,num
选择行
DataTable dt=query.CopyToDataTable()
var query=dtReports.AsEnumerable()
.OrderBy(x=>x.Field(“ReportNumber”).Substring(0,4))
.ThenBy(x=>x.Field(“ReportNumber”).Substring(5));
var dt=query.CopyToDataTable();
您可以使用:
看看这个,,
希望这就是您想要的?它与OP的代码有何不同?它基本上是相同的查询,使用lambda语法而不是查询理解语法…您可以使用从数据行创建新的数据表。
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>();
DataTable dt = query.CopyToTable()