有人在此处添加另一个答案(似乎已被删除,我正在尝试这种方法并使其也可以正常工作)。
所有的功劳都归于那个匿名的人。
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()
});