使用Linq语句选择最大修订版

nfugit 发布于 2019-03-09 c# 最后更新 2019-03-09 14:35 6 浏览

我查了一些其他的答案,没有一个看起来完全符合我的要求,而且我现在也无法进一步处理这些问题。 我有一张容纳我们所有文件和修订的表格。 我目前有这个Linq:

from v in IPACS_Versions
where v.DateApproved == null
group v by v.DocumentID into g
select g.Max(t => t.Revision)
这正确地给我需要修订的项目,但是我需要选择所有的字段,目前它只是选择修订字段。我对Linq很新,我怎么改变它? 更详细的情况下,我的上面的代码是完全错误的。 我需要选择整个行作为每个文档的最大修订版本。主键是documentId,每个documentId可以有很多不同的修订版本,我需要最新的版本。其他标准是有一个字段dateApproved,如果它尚未获得批准,则为null,因此最大修订或任何尚未获得批准的项目。
已邀请:

taut

赞同来自:

如果这是查询数据库,您可能需要:

from v in IPACS_Versions
where v.DateApproved == null
group v by v.DocumentID into g
select g.OrderByDescending(t => t.Revision).First()
如果它在本地运行(LINQ to Objects),则可以使用MoreLINQMaxBy方法:
from v in IPACS_Versions
where v.DateApproved == null
group v by v.DocumentID into g
select g.MaxBy(t => t.Revision)