我有一个像这样构建的SQL表:
项目:
Id ItemId VersionId
---------- ---------- ----------
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 3 1
Run Code Online (Sandbox Code Playgroud)
现在我想用linq选择每个项目的最新版本.预期的产出是:
Id ItemId VersionId
---------- ---------- ----------
3 1 3
5 2 2
6 3 1
Run Code Online (Sandbox Code Playgroud)
每个项目都有自己的版本计数,因此创建项目1的新版本将为其提供VersionId 4,而创建项目3的新版本将为其提供VersionId为2.
到目前为止,我试图选择项目,然后使用GroupBy:
var query = from i in items
select i;
var test = query.GroupBy(q => q.ItemId).ToList();
Run Code Online (Sandbox Code Playgroud)
这将返回3个组的列表,每个项目一个组.
现在,我将如何继续并获取这些组中仅包含最新版本项目的列表?
如果您想要最高版本,可以订购每个组,并在订购后只选择最高版本:
var test = query.GroupBy(q => q.ItemId)
.Select(group => group.OrderByDescending(g => g.VersionId).First())
.ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |