我有一个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数据表具有降序年份顺序的数据。
答案 0 :(得分:1)
为什么Year
是一个字符串而不是一个整数?如果您无法更改,则必须始终解析该值:
Dim orderedYearQuery = existingDT.AsEnumerable().
GroupBy(Function(row) Int32.Parse(row.Field(Of String)("Year"))).
OrderByDescending(Function(grp) grp.Key)