Linq在C#中按2列分组[重复]
Posted
技术标签:
【中文标题】Linq在C#中按2列分组[重复]【英文标题】:Linq to group by 2 columns in C# [duplicate] 【发布时间】:2013-05-28 11:42:14 【问题描述】:我有一个简单的 Linq 查询,它按一个字段 Team
分组:
var qbt = db.Calls.GroupBy(x => x.team).Select(call => new
Team = call.Key,
Number=call.Count()
);
返回:
Team Number
ta 100
tb 98
tc 123
如何将查询更改为具有附加列“状态”,以便它返回:
Team Number Status
ta 40 Open
ta 60 Closed
tb 58 Open
tb 40 Closed
tc 1 Open
tc 122 Closed
我尝试添加另一个组:
var qbt = db.Calls.GroupBy(x => x.team).GroupBy(y => y.status).Select(call => new
Team = call.Key,
Status = call.Key2,
Number=call.Count()
);
...但这不会编译。
谢谢你,马克
【问题讨论】:
【参考方案1】:您可以对匿名类型进行分组:
.GroupBy(x => new x.team, x.status )
用对应的select:
.Select(call => new
Team = call.Key.team,
Status = call.Key.status,
Number = call.Count()
);
【讨论】:
【参考方案2】:您需要在分组中创建新的匿名类型,这应该可以解决问题。
var qbt = db.Calls
.GroupBy(x => new Team = x.team, Status = x.status )
.Select(call => new
Team = call.Key.Team,
Status = call.Key.Status,
Number=call.Count()
);
【讨论】:
您的语法错误。那应该是Team = call.Key.Team
和Status = call.Key.Status
(Key2
不会存在,Key
将是在 groupby 中创建的匿名类型)
对 - 甚至没有注意到那部分,因为它是从问题中复制粘贴的;虽然最重要的部分似乎没问题。谢谢。以上是关于Linq在C#中按2列分组[重复]的主要内容,如果未能解决你的问题,请参考以下文章