多くの基準を持つルールがあり、ユーザーが複数の基準を選択した場合、そのルール内のすべての基準がユーザーの選択した基準とともに存在するすべてのルールを提供する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クエリと同じです。どうしますか?