【发布时间】:2018-07-05 03:49:52
【问题描述】:
我有一个这样构建的 SQL 表:
项目:
Id ItemId VersionId
---------- ---------- ----------
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 3 1
现在我想用 linq 选择每个项目的最新版本。预期的输出是:
Id ItemId VersionId
---------- ---------- ----------
3 1 3
5 2 2
6 3 1
每个项目都有自己的版本计数,因此制作项目 1 的新版本将为其赋予 VersionId 4,而制作项目 3 的新版本将赋予其 VersionId 2。
到目前为止,我已经尝试选择项目,然后使用 GroupBy:
var query = from i in items
select i;
var test = query.GroupBy(q => q.ItemId).ToList();
这会返回一个包含 3 个组的列表,每个组一个组。
现在我将如何继续并从这些组中获取仅包含最新版本项目的列表?
【问题讨论】:
-
var test = query.GroupBy(q => q.ItemId).Select(chunk => chunk.OrderByDescending(item => item.VersionId).First()).ToList();