2009-06-28 5 views
2

У меня есть таблица художников и таблица стилей.Группировка и подсчет с LinqToSQL

художника таблица: идентификатора имени styleid

стиль таблицы ID имени

Художник имеет идентификатор стиля

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

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

  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() 
       }; 

Возможно ли это с одной поездкой туда и обратно?

ответ

3

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

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

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

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() 
    } 
Смежные вопросы