3

1 つのフィールドでグループ化する単純な 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 に答える