亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# LINQ GroupBy 將列表轉換為具有一個屬性作為值列表的組

C# LINQ GroupBy 將列表轉換為具有一個屬性作為值列表的組

C#
斯蒂芬大帝 2022-06-19 09:54:41
我有一個對象列表list1Name ValueN1   V100 N2   V101N1   V102N4   V103N4   V104我想將其轉換為分組列表Name ValuesN1   V100, V102 N2   V101N4   V103, V104當我使用時,GroupBy我得到了整個東西,( list1.GroupBy(key => key.Name) )Name ValuesN1  N1   V100  N1   V102N2  N2   V101N4  N4   V103  N4   V104我只想將值作為列表。
查看完整描述

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示例目的,但實際上,這并不重要,因為解決方案保持不變。


查看完整回答
反對 回復 2022-06-19
?
心有法竹

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() 

               });


查看完整回答
反對 回復 2022-06-19
  • 2 回答
  • 0 關注
  • 219 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號