3

我有一个简单的 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()
        });

...但这不会编译。

谢谢你,马克

4

2 回答 2

11

您可以对匿名类型进行分组:

.GroupBy(x => new { x.team, x.status })

使用相应的选择:

.Select(call => new
    {
        Team = call.Key.team,
        Status = call.Key.status,
        Number = call.Count()
    });
于 2013-05-28T11:43:18.777 回答
9

您需要在分组中创建新的匿名类型,这应该可以解决问题。

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()
    });
于 2013-05-28T11:44:38.670 回答