1. ホーム
  2. c#

[解決済み] IGroupingから値を取得する方法

2022-02-27 19:34:03

質問

について質問があります。 IGroupingSelect() メソッドを使用します。

例えば IEnumerable<IGrouping<int, smth>> をこのようにします。

var groups = list.GroupBy(x => x.ID);

ここで listList<smth> .

そして次に、それぞれの値を渡す必要があります。 IGrouping を別のリストに何らかの方法で追加します。

foreach (var v in structure)
{
    v.ListOfSmth = groups.Select(...); // <- ???
}


誰か、値を取得する方法を教えてください ( List<smth> を使用します。 IGrouping<int, smth> というような文脈で?

どのように解決するのですか?

以来 IGrouping<TKey, TElement> を実装しています。 IEnumerable<TElement> を使用することができます。 SelectMany を使用して、すべての IEnumerables を1つに戻す IEnumerable を一斉に表示します。

List<smth> list = new List<smth>();
IEnumerable<IGrouping<int, smth>> groups = list.GroupBy(x => x.id);
IEnumerable<smth> smths = groups.SelectMany(group => group);
List<smth> newList = smths.ToList();

ビルド/実行する例です。 https://dotnetfiddle.net/DyuaaP

本ソリューションの解説動画です。 https://youtu.be/6BsU1n1KTdo