2

アーティストテーブルとスタイルテーブルがあります。

アーティストテーブル:id name 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回の往復で可能ですか?

4

2 に答える 2

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()
           };
于 2009-06-28T09:58:42.627 に答える
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()
    }
于 2009-06-28T09:56:57.577 に答える