Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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_Lambda_Linq Group_Igrouping - Fatal编程技术网

C#LINQ GroupBy将列表转换为具有一个属性作为值列表的组

C#LINQ GroupBy将列表转换为具有一个属性作为值列表的组,c#,linq,lambda,linq-group,igrouping,C#,Linq,Lambda,Linq Group,Igrouping,我有一个对象列表list1 Name Value N1 V100 N2 V101 N1 V102 N4 V103 N4 V104 我想将其转换为分组列表 Name Values N1 V100, V102 N2 V101 N4 V103, V104 当我使用GroupBy时,我得到了全部信息,(list1.GroupBy(key=>key.Name)) 我只想将值作为列表。在GroupBy之后,使用ToDictionary: source.GroupBy(

我有一个对象列表
list1

Name Value
N1   V100 
N2   V101
N1   V102
N4   V103
N4   V104
我想将其转换为分组列表

Name Values
N1   V100, V102 
N2   V101
N4   V103, V104
当我使用
GroupBy
时,我得到了全部信息,
(list1.GroupBy(key=>key.Name))


我只想将值作为列表。

GroupBy
之后,使用
ToDictionary

source.GroupBy(x => x.Name)
      .ToDictionary(x => x.Key, x => x.Select(e => e.Value).ToList());
这将生成一个
字典
,其中键是名称,值是由将每个元素投影到该特定组下的
字符串
组成的列表


我假设
是一个
字符串
仅用于示例目的,但实际上,这并不重要,因为解决方案保持不变。

分组方式
之后,使用
ToDictionary

source.GroupBy(x => x.Name)
      .ToDictionary(x => x.Key, x => x.Select(e => e.Value).ToList());
这将生成一个
字典
,其中键是名称,值是由将每个元素投影到该特定组下的
字符串
组成的列表


我假设
是一个
字符串
,仅用于示例目的,但实际上,这并不重要,因为解决方案保持不变。

在此处添加另一个答案, (这似乎已被删除,我正在尝试这种方法,并使其发挥作用)。
所有的功劳都归于那个匿名的人

    source.GroupBy(x => x.Name, y=> y.Value)
          .Select( result => new { Name = result.Name,
                                   Values = result.Select(r=> r.Value).ToList() } );
字典解决方案似乎更直观,因为我可以看到所有生成结果的转换

编辑:

在这方面花费了太多的时间,这里有两种其他方法可以实现这一点:-

source.GroupBy(grpKey => grpKey.Name, 
                   elementSelector => elementSelector,
                   (resultSelectorName, resultSelectorValues ) => new 
                   {
                     Name = resultSelectorName,
                     Values = resultSelectorValues.Select(v=>v.Value).ToList() 
                   });
(二)


有人在这里补充了另一个答案, (这似乎已被删除,我正在尝试这种方法,并使其发挥作用)。
所有的功劳都归于那个匿名的人

    source.GroupBy(x => x.Name, y=> y.Value)
          .Select( result => new { Name = result.Name,
                                   Values = result.Select(r=> r.Value).ToList() } );
字典解决方案似乎更直观,因为我可以看到所有生成结果的转换

编辑:

在这方面花费了太多的时间,这里有两种其他方法可以实现这一点:-

source.GroupBy(grpKey => grpKey.Name, 
                   elementSelector => elementSelector,
                   (resultSelectorName, resultSelectorValues ) => new 
                   {
                     Name = resultSelectorName,
                     Values = resultSelectorValues.Select(v=>v.Value).ToList() 
                   });
(二)