Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在数据表上使用LINQ GroupBy返回多个字段_C#_Linq_Datatable_Ienumerable - Fatal编程技术网

C# 在数据表上使用LINQ GroupBy返回多个字段

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

我有一个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  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”后面漏掉了一个逗号。但除此之外,它工作得非常好。谢谢