如果我有一个具有许多条件的规则并且用户选择了多个条件,我如何编写一个 linq 查询,为我提供所有规则,其中该规则中的每个条件都与用户选择的条件一起存在?
这是我目前在 SQL 中的做法:
表
rule:
ruleId int
categoryId int
ruleCriteria:
ruleId int,
criteriaId int
@userCriteria:
criteriaId int
categoryId int
询问
SELECT
r.ruleId
FROM dbo.rule r
INNER JOIN dbo.ruleCriteria rc ON r.ruleId= rc.ruleId
LEFT OUTER JOIN @userCriteria uc
ON rc.criteriaId = uc.criteriaId
AND r.categoryId = uc.categoryId
GROUP BY r.ruleId
HAVING COUNT(rc.criteriaId) = COUNT(uc.criteriaId)
对于 linq 查询,我将拥有这些对象(更加非规范化,但如果有帮助,我可以将它们放在与表相同的结构中):
userCriteria:
criteriaId int
categoryId int
ruleCriteria:
ruleId int
categoryId int
criteriaId int
我的目标与获取不同匹配规则列表的 SQL 查询相同。你会怎么做?