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
的记录的情况下获取记录。
我正在使用 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
的记录的情况下获取记录。