2

我有一张艺术家表和一张风格表。

艺术家表: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()
               };

单次往返可以吗?

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 回答