在Entity Framework Core中,我需要使用方法语法来表示以下SQL查询。
select *
from [Rule] as t1
where
(
select count(*)
from [Rule] as t2
where t1.ProductID = t2.ProductID
and t2.Priority > t1.Priority
) = 0
查询返回每个ProductID具有最高优先级的记录。
有办法吗?
谢谢。
答案 0 :(得分:2)
尝试一下:
var rules = db.Rules.Where(
a=>db.Rules.Where(
b => b.ProductId == a.ProductId && b.Priority > a.Priority
).Count() == 0
);
如果您想使用Linq语法:
var rules = from a in db.Rules
where (
from b in db.Rules
where a.ProductId == b.ProductId
&& b.Priority > a.Priority
select b
).Count() == 0
select a;