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 關注
- 219 瀏覽
添加回答
舉報