我有一个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个组的列表,每个项目对应一个组。
现在,我如何继续并仅从这些组中获取最新版本的项目列表?
发布于 2018-06-25 16:08:57
如果您想要最高版本,您可以对每个组进行排序,排序后只取最高版本:
var test = query.GroupBy(q => q.ItemId)
.Select(group => group.OrderByDescending(g => g.VersionId).First())
.ToList();
https://stackoverflow.com/questions/51018781
复制相似问题