Группировка и подсчет с LinqToSQL - PullRequest
2 голосов
/ 28 июня 2009

У меня есть стол художника и таблица стилей.

таблица художника: Я бы название styleid

таблица стилей Я бы имя

У художника есть идентификатор стиля

Я пытаюсь вернуть сводку стилей, которая включает идентификатор стиля, имя стиля и количество исполнителей, принадлежащих этому стилю.

У меня есть следующее утверждение, которое дает мне идентификатор и количество исполнителей, но я не вижу, как также получить имя стиля.

          return from s in DBContext.Styles
               join artist in DBContext.Artists on s.ID equals artist.StyleID
               group artist by artist.StyleID into a
               select new DTO.StyleSummary
               {
                   ID = a.Key,
                   NumberOfArtists = a.Count()
               };

Возможно ли это за один раз?

Ответы [ 2 ]

3 голосов
/ 28 июня 2009

Вы можете использовать анонимный тип для группировки по нескольким значениям:

    return from s in DBContext.Styles
           join artist in DBContext.Artists on s.ID equals artist.StyleID
           group artist by new {s.ID, s.Name } into a
           select new DTO.StyleSummary {
               ID = a.Key.ID,
               Name = a.Key.Name,
               NumberOfArtists = a.Count()
           };
1 голос
/ 28 июня 2009

Вы можете сделать подсчет в подзапросе, как этот ...

var results =
    from s in DBContext.Styles
    select new
    {
        Id = s.Key,
        NumberOfArtists = 
        (
            from a in DBContext.Artists
            where a.StyleId = s.StyleId
            select a
        ).Count()
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...