我有一个LINQ查询,它返回一个状态列表和一个数据表中每个状态缩写的计数。
var query = ds.Tables[0].AsEnumerable()
.GroupBy(r => r.Field<string>("state"))
.Select(grp => new
{
state = grp.Key,
Count = grp.Count()
})
.OrderBy(o => o.state)
.ToList();
返回
State Count
AL 55
AK 40
AZ 2
如何修改此查询以返回其他字段(州名称)?或者我是否需要采取另一种方法来实现这一目标?
State Name Count
AL Alaska 55
AK Arkansas 40
AZ Arizona 2
答案 0 :(得分:2)
创建要分组的匿名类型:
var query = ds.Tables[0].AsEnumerable()
.GroupBy(r => new
{
state = r.Field<string>("state"),
name = r.Field<string>("name"),
})
.Select(grp => new
{
name = grp.Key.name,
state = grp.Key.state,
Count = grp.Count()
})
.OrderBy(o => o.state)
.ToList();
答案 1 :(得分:1)
假设所有“州”值的“名称”相同,您只需将Select
更改为:
.Select(grp => new
{
state = grp.Key,
Name = grp.First().Field<string>("State Name"),
Count = grp.Count()
})