c# - 如何过滤 EF Core 中的多对多联接
问题描述
我有以下结构:
- 产品分类
- 产品(具有一个产品类别)
- ProductComplementCategory(产品有很多 ProductComplementCategory)
- ComplementCategory(ProductComplementCategory 有一个 ComplementCategory)
- ComplementCategoryComplements(ComplementCategory 有很多 ComplementCategoryComplements)
- Complement(ComplementCategoryComplements 有一个 Complement)
所有表都具有“活动”属性,我需要在产品类别、产品、补充类别和补充表中选择所有具有连接但过滤活动 = 1 的表
在 SQL 中查询:
SELECT
pc.*,
p.*,
cc.*,
c.*
FROM
ProductCategory pc
JOIN Product p ON pc.[ Uid ] = p.ProductCategoryId
JOIN ProductComplementCategory pcc ON p.[ Uid ] = pcc.ProductID
JOIN ComplementCategory cc ON pcc.ComplementCategoryID = cc.[ Uid ]
JOIN ComplementCategoryComplements ccc ON cc.[ Uid ] = ccc.ComplementCategoryID
JOIN Complement c ON ccc.ComplementID = c.[ Uid ]
WHERE
pc.Active = 1
AND p.Active = 1
AND cc.Active = 1
AND c.Active = 1
我需要在 EF Core 中执行此查询!
解决方案
我希望这会对你有所帮助
var temp = (
from pc in ProductCategory
join p in Product
on pc.Uid equals p.ProductCategoryId
join pcc in ProductComplementCategory
on pcc on p.Uid equals pcc.ProductID
join permission in ComplementCategory
on pcc.ComplementCategoryID equals cc.Uid
join cc in ComplementCategoryComplements
on cc.Uid equals ccc.ComplementCategoryID
join c in Complement
on ccc.ComplementID equals c.Uid
where pc.Active = 1 && p.Active = 1 && cc.Active = 1 && c.Active = 1
select new { pc,p,pcc,c,cc }
).ToList
推荐阅读
- ios - ios app 在 ipad 上运行,launchscreen.storyboard 旋转屏幕问题
- chef-infra - 使用 Chef 安装和启用 python 3
- vba - 自动删除电子邮件正文中警告周围的边框
- c++ - 为什么这个 if(s[j]==s[i] && i>0) 条件不适用于这个 [{()}]
- fluentd - JSON 和非 JSON 结束日志的 Fluentd 解析错误
- javascript - React - 如何从子组件获取状态数据?
- excel - 添加或删除不相关的工作表时 Excel VBA UDF 返回 #VALUE 错误
- angularjs - 无法在 .net core mvc 中加载 angularJS 视图
- python - Urllib 引发 urllib.error.URLError:
- docker - 如何在 Docker 中将 --env JAVA_OPTS= 传递给 Jenkins