преобразование ms sql "group by" запроса в linq в sql - PullRequest
1 голос
/ 16 февраля 2009

У меня есть две таблицы, продукты и категории. Как преобразовать следующий SQL-запрос в формат Linq?

select c.Name, c.DisplayName, count(p.id) from categories as c
LEFT join products as p on p.categoryId = c.id
group by c.Name, c.DisplayName

в некоторых категориях будет 0 товаров, поэтому ЛЕВОЕ СОЕДИНЕНИЕ важно

Ответы [ 3 ]

2 голосов
/ 16 февраля 2009

если вы правильно определите отношения в своей модели, тогда таблица клиентов должна иметь связь со всеми продуктами, чтобы вы могли получить доступ к продуктам, связанным с клиентом, просто используя «c.Products». Тогда должна быть возможность написать что-то вроде этого:

  var q = 
    from c in categories
    select new { c.Name, c.DisplayName, Count = c.Products.Count() }

Т.

0 голосов
/ 04 сентября 2009

чтобы показать группировку на основе.

 var q =   from c in db.categories
    group c by new {c.Name , c.DisplayName} into alias
    select new { alias.Name, 
                 alias.DisplayName, 
                 Count = alias.Count(p => p.id) 
                }
0 голосов
/ 16 февраля 2009
dc.categories
.Select(c => new
{
  Name = c.Name,
  DisplayName = c.DisplayName,
  TheCount = c.Products.Count()
}

Если вы хотите сделать левое соединение в других случаях, проверьте «групповое соединение».

dc.categories
.GroupJoin(dc.products,
  c => c.id,
  p => p.categoryid,
  (c, g) => new { Name = c.Name, TheCount = g.Count() }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...