Как сделать запрос LINQ с GroupBy и LEFT JOIN - PullRequest
3 голосов
/ 05 августа 2010

Я использую EF4, и мне нужно сделать этот запрос с помощью LINQ, но я не знаю, как.

Если у меня есть 3 таблицы:

  • ProductType
  • Продукт
  • сезон

ProductType -> один ко многим -> Product -> много к одному -> Сезон

Я хотел бы иметь список всех ProductType с их Продуктами за один сезон. Обратите внимание, что мне нужно перечислить ВСЕ ProductType , даже если в этом сезоне нет Продукта внутри.

спасибо за помощь!

Ответы [ 2 ]

4 голосов
/ 05 августа 2010

Попробуйте это:

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, но я думаю , это будет делать то, что вы ищете.

2 голосов
/ 06 августа 2010

Предполагая, что вы хотите левое соединение, в соответствии с вашим вопросом, выполните:

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