使用Entity Framework Core方法语法为组选择一条记录

时间:2019-07-19 13:40:42

标签: entity-framework-core

在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具有最高优先级的记录。

有办法吗?

谢谢。

1 个答案:

答案 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;