2

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

3 回答 3

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>();
于 2011-10-26T15:22:28.350 回答
2

您可以使用CopyToDataTable

DataTable dt = query.CopyToTable()
于 2011-10-26T15:23:43.233 回答
0

看看这个, http: //msdn.microsoft.com/en-us/library/bb386921.aspx 希望这就是你要找的东西?

于 2011-10-26T15:30:01.770 回答