【问题标题】:LINQ group by expression syntaxLINQ 按表达式语法分组
【发布时间】:2009-11-25 10:57:03
【问题描述】:

我有一个类似这样的 T-SQL 查询:

SELECT r_id, r_name, count(*)
FROM RoomBindings
GROUP BY r_id, r_name

我想用 LINQ 做同样的事情。到目前为止,我到了这里:

var rooms = from roomBinding in DALManager.Context.RoomBindings
                        group roomBinding by roomBinding.R_ID into g
                        select new { ID = g.Key };

如何提取 count(*) 和 r_name 部分?

【问题讨论】:

  • 谢谢狗!我已经找了差不多 2 个小时了! :facepalm:

标签: c# linq


【解决方案1】:

试试这个:

var rooms = from roomBinding in DALManager.Context.RoomBindings
                        group roomBinding by new 
                        { 
                           Id = roomBinding.R_ID, 
                           Name = roomBinding.r_name
                        }
                        into g
                        select new 
                        { 
                           Id = g.Key.Id,
                           Name = g.Key.Name,
                           Count = g.Count()  
                        };

由 Nick 编辑 - 添加了用于比较的方法链语法

var rooms = roomBinding.GroupBy(g => new { Id = g.R_ID, Name = g.r_name })
                       .Select(g => new
                           {
                               Id = g.Key.Id,
                               Name = g.Key.Name,
                               Count = g.Count()
                           });

【讨论】:

  • 任何想法如何在查询语法方面成为“Having Count”?
  • @RollRoll - 可以通过在答案链的末尾添加另一个 Where 表达式来完成“有计数”。例如:.Where(x => x.Count > 1)
猜你喜欢
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
相关资源
最近更新 更多