如何使用GroupBy和LEFT JOIN进行LINQ查询

时间:2010-08-05 15:01:41

标签: c# linq linq-to-entities c#-4.0

我正在使用EF4,我需要使用LINQ进行此查询,但我不知道如何。

如果我有3张桌子:

  • ProductType
  • 产品

ProductType - >一对多 - > 产品 - >多对一 - > 季节

我希望在一个季节中列出所有ProductType及其产品。请注意,我需要列出所有ProductType ,即使该季节内没有产品。

谢谢你的帮助!

2 个答案:

答案 0 :(得分:4)

试试这个:

var query = from pt in model.ProductTypes
            join p in model.Product.Where(p => p.SeasonId == seasonId)
               on pt.Id equals p.ProductTypeId into g
            select new { ProductType = pt, Products = g };

我不得不承认我join ... into总是有些生疏,但我认为这会做你想要做的事。

答案 1 :(得分:2)

假设你确实想要一个左连接,根据你的问题,做:

var query = from pt in model.ProductTypes
            select new
            {
                ProductType = pt,
                Products = from p in pt.Products
                           where p.SeasonId == seasonId
                           select p
            };