web-dev-qa-db-ja.com

IGroupingの「値」プロパティを取得します

私は次のようなデータ構造を持っています

public DespatchGroup(DateTime despatchDate, List<Products> products);

そして、私はやろうとしている...

var list = new List<DespatchGroup>();

foreach (var group in dc.GetDespatchedProducts().GroupBy(i => i.DespatchDate))
{
    // group.Values is not correct... how do I write this?
    list.Add(new DespatchGroup(group.Key, group.Values);
}

グループ内のデータレコードに実際にアクセスする方法がわからないので、明らかにIGroupingを理解していません。

117

グループはIEnumerable<T>を実装します-一般の場合、foreachを介してgroupを呼び出すだけです。 thisの場合、List<T>が必要なので:

list.Add(new DespatchGroup(group.Key, group.ToList());
147
Marc Gravell

IGrouping<T>自体isIEnumerable<T>値のシーケンスであるため、Valuesプロパティなどはありません。この場合に必要なことは、そのシーケンスをリストに変換することだけです。

list.Add(new DespatchGroup(group.Key, group.ToList());
29
LukeH

関連するヒント-他の回答で述べたように、グループ化はIEnumerableなので、特定のインデックスにアクセスする必要がある場合は、group.ElementAt(i)を使用できます。

これはおそらく多くの人にとって明らかなことですが、うまくいけば何人かの助けになるでしょう!

17
Rob H

選択したグループについては、呼び出すことができます

var selectedGroupValues=selectedGroup.SelectMany(x=>x);
12
Bassl Kokash