2009-06-28 154 views
2

我有一个艺术家表和一个样式表。LinqToSQL分组和计数

艺术家表: ID 名 styleid

样式表 ID 名

一个艺术家有一个风格ID

我试图返回一个风格总结,其中包括风格ID ,风格名称和属于该风格的艺术家数量。

我已经得到了下面的声明,它让我的艺术家的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() 
    }