2 回答
TA贡献1883条经验 获得超3个赞
之后GroupBy
,使用ToDictionary
:
source.GroupBy(x => x.Name) .ToDictionary(x => x.Key, x => x.Select(e => e.Value).ToList());
这会产生一个Dictionary<string, List<string>>
,其中键是名称,值是由将每个元素投影到string
该特定组下的列表组成的列表。
我认为这Value
只是一个string
示例目的,但实际上,这并不重要,因为解决方案保持不变。
TA贡献1866条经验 获得超5个赞
有人在此处添加另一个答案(似乎已被删除,我正在尝试这种方法并使其也可以正常工作)。
所有的功劳都归于那个匿名的人。
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()
});
2)
source.GroupBy(grpKey => grpKey.Name,
elementSelector => elementSelector.Value,
(resultSelectorName, resultSelectorValue ) => new
{
Name = resultSelectorName,
Values = resultSelectorValue.ToList()
});
- 2 回答
- 0 关注
- 193 浏览
添加回答
举报