C# 在数据表上使用LINQ GroupBy返回多个字段
我有一个LINQ查询,它从数据表返回一个状态列表和每个状态缩写出现的计数C# 在数据表上使用LINQ GroupBy返回多个字段,c#,linq,datatable,ienumerable,C#,Linq,Datatable,Ienumerable,我有一个LINQ查询,它从数据表返回一个状态列表和每个状态缩写出现的计数 var query = ds.Tables[0].AsEnumerable() .GroupBy(r => r.Field<string>("state")) .Select(grp => new { state = grp.Ke
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 Name Count
AL Alaska 55
AK Arkansas 40
AZ Arizona 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();
var query=ds.Tables[0].AsEnumerable()
.GroupBy(r=>new
{
状态=r.字段(“状态”),
名称=r.字段(“名称”),
})
.选择(grp=>new
{
name=grp.Key.name,
state=grp.Key.state,
Count=grp.Count()
})
.OrderBy(o=>o.state)
.ToList();
创建匿名类型以分组:
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();
var query=ds.Tables[0].AsEnumerable()
.GroupBy(r=>new
{
状态=r.字段(“状态”),
名称=r.字段(“名称”),
})
.选择(grp=>new
{
name=grp.Key.name,
state=grp.Key.state,
Count=grp.Count()
})
.OrderBy(o=>o.state)
.ToList();
假设所有“状态”值的“名称”相同,您只需将选择更改为:
.Select(grp => new
{
state = grp.Key,
Name = grp.First().Field<string>("State Name"),
Count = grp.Count()
})
。选择(grp=>新建
{
state=grp.Key,
Name=grp.First().Field(“State Name”),
Count=grp.Count()
})
假设所有“状态”值的“名称”相同,您只需将选择更改为:
.Select(grp => new
{
state = grp.Key,
Name = grp.First().Field<string>("State Name"),
Count = grp.Count()
})
。选择(grp=>新建
{
state=grp.Key,
Name=grp.First().Field(“State Name”),
Count=grp.Count()
})
数据集是否包含州名?数据集是否包含州名?在“name=grp.Key.name”之后您省略了逗号。但除此之外,它工作得非常好。谢谢。你在“name=grp.Key.name”后面漏掉了一个逗号。但除此之外,它工作得非常好。谢谢