EFCore Linq: Select 仅记录某列的最大值

EFCore Linq: Select only the records with the max value of a column

我正在使用 Entity Framework Core(lambda 语法)。这似乎是一件很容易做的事情,但由于某种原因它让我望而却步。

假设我有一个像这样的简单 table:

Run  Result
1    result1
1    result2
2    result3
2    result4    

我只想抓取具有最大 运行 值的行。

所以结果应该是:

2    result3
2    result4

基本上按 运行 分组,得到具有最大 运行 值和 return 所有行的组。也许我的想法不对?

Group by 不起作用(没有自然的 SQL 翻译)。

然而,某种自连接就可以了。

例如

db.Runs.Where(e => e.Run == db.Runs.Max(e2 => (int?)e2.Run))

即获取最大 Run 的记录(请参阅 了解为什么需要可空转换)

db.Runs.Where(e => !db.Runs.Any(e2 => e2.Run > e.Run))

即在不存在具有更大 Run 的记录的情况下获取记录。