我当前的数据库解决方案包括三个名为Establishment
,的表Feature
和一个名为 的链接多对多表EstablishmentFeature
(因为一个机构可以有许多特征,并且一个特征可以存在于多个机构中)。
我需要生成一个查询,该查询返回仅满足某些条件的机构,即哪些机构具有基于传入的 featureId 集合的 X 功能。机构必须具有正在搜索的所有功能,即。AND
不是OR
条件。
我得到了 SQL 来达到预期的结果,但我正在努力解决 LINQ(最好是lambra)等价物。T-SQL 是:
SELECT e.[EstablishmentId], e.[Name], e.[Description]
FROM Establishment e
INNER JOIN EstablishmentFeature ef
ON e.[EstablishmentId] = ef.[EstablishmentId]
WHERE ef.[FeatureId] in ('20', '15', '72')
GROUP BY e.[EstablishmentId], e.[Name], e.[Description]
HAVING COUNT(*) = 3
我尝试使用 Linqer 转换 SQL,但 Linqer 在尝试转换时崩溃。我尝试重新安装 Linqer,但在尝试编译 LINQ 语法时它崩溃了。(虽然更简单的转换工作)。还尝试使用 LinqPad 计算出 LINQ 等价物,但我最终追上了我的尾巴……
这是我必须使用PredicateBuilder的东西吗?有点筋疲力尽,如果有一个简单的解决方案让我无所适从,我不想经历 PredicateBuilder 学习曲线。