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()
});
(二)