linq-to-sql - 使用 LinqToSQL 进行分组和计数

标签 linq-to-sql count grouping

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

艺术家表: ID 姓名 样式ID

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

这可以通过单次往返实现吗?

最佳答案

您可以使用匿名类型按多个值进行分组:

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

关于linq-to-sql - 使用 LinqToSQL 进行分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054624/

相关文章:

c# - 更改 LINQ to SQL 插入的顺序

c# - 大于 Linq Join 中的多个条件

excel - 在 BIRT 上的表格详细信息中垂直合并单元格

mysql - 如何在不使用子查询的情况下同时计算两个关系

delphi - 循环 TabSheet 上的所有组件

dependencies - Gradle:如何在多项目脚本中对依赖项进行分组?

sql - 缩短 GROUP BY 子句

c# - Linq - 按日期分组并选择计数

c# - 使用动态表达式对组进行 IQueryable LINQ 转换错误

sql - 来自INNER JOIN的SQL计数