我正在使用Entity Framework Core(lambda语法)。这似乎很容易做到,但是出于某种原因却使我难以理解。
让我们说一个简单的表格是这样的:
Run Result
1 result1
1 result2
2 result3
2 result4
我要做的就是获取具有最大运行值的行。
所以结果应该是:
2 result3
2 result4
基本上按运行分组,并获得具有最大运行值的分组,然后返回所有行。也许我在想这是错误的方式?
答案 0 :(得分:1)
分组依据不起作用(无自然SQL翻译)。
不过,某种形式的自我加入会起作用。
例如
db.Runs.Where(e => e.Run == db.Runs.Max(e2 => (int?)e2.Run))
即记录最大为Run
的记录(有关为何需要可空强制转换的信息,请参见How to translate this SQL query to a LINQ query in EF Core?)
或
db.Runs.Where(e => !db.Runs.Any(e2 => e2.Run > e.Run))
即记录没有Run
更大的记录。