Linq:如何在此语句中添加Order By子句

时间:2015-07-17 13:48:34

标签: vb.net linq datatable

我有一个linq语句,它接受一个现有的数据表,并通过使用GroupBy获取不同年份的列表,然后得到具有该年份的项目数,并将其放置在另一个数据表中。

Dim yearQuery = existingDT.AsEnumerable().GroupBy(Function(yi) yi.Field(Of String)(existingDT.Columns("Year")))

Dim yearResults As New DataTable()

yearResults.Columns.Add("Year")
yearResults.Columns.Add("Quantity")

For Each yi In yearQuery 
    yearResults.Rows.Add( yi.Key, yi.Count)
Next

这很好用,但尝试我可能无法弄清楚如何生成结果,以便yearResults数据表具有降序年份顺序的数据。

1 个答案:

答案 0 :(得分:1)

为什么Year是一个字符串而不是一个整数?如果您无法更改,则必须始终解析该值:

Dim orderedYearQuery = existingDT.AsEnumerable().
    GroupBy(Function(row) Int32.Parse(row.Field(Of String)("Year"))).
    OrderByDescending(Function(grp) grp.Key)