2009-06-28 12 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() 
       }; 

これは1回の往復で可能ですか?あなたはこのようなサブクエリでのカウントを行うことができ

答えて

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() 
    } 
関連する問題