首页 > 解决方案 > 如何过滤 EF Core 中的多对多联接

问题描述

我有以下结构:

所有表都具有“活动”属性,我需要在产品类别、产品、补充类别和补充表中选择所有具有连接但过滤活动 = 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 中执行此查询!

标签: c#sql.net-coreentity-framework-coreef-core-2.0

解决方案


我希望这会对你有所帮助

 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

推荐阅读