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

时间:2013-04-11 16:11:22

标签: c# linq

我已经查看了其他一些答案,似乎没有一个正是我正在寻找的东西,而且我无法比现在更进一步解决这些问题。

我有一张包含所有文件和修订的表格。

我目前有这个Linq:

from v in IPACS_Versions
where v.DateApproved == null
group v by v.DocumentID into g
select g.Max(t => t.Revision)

这正确地为我提供了需要修改的项目,但是我需要选择所有字段,目前它只选择Revision字段。我对Linq很新,我怎么能改变它?

如果上面的代码完全错误,请提供详细信息。

我需要为每个文档的最大修订选择整行。主键是documentId,每个documentId可以有很多不同的版本,我需要最新版本。另一个标准是,如果尚未批准,则字段dateApproved为null,因此最大修订版或任何尚未批准的项目。

1 个答案:

答案 0 :(得分:4)

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

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),您可以使用MaxByMoreLINQ方法:

from v in IPACS_Versions
where v.DateApproved == null
group v by v.DocumentID into g
select g.MaxBy(t => t.Revision)