私は次のようなデータ構造を持っています
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
を理解していません。
グループはIEnumerable<T>
を実装します-一般の場合、foreach
を介してgroup
を呼び出すだけです。 thisの場合、List<T>
が必要なので:
list.Add(new DespatchGroup(group.Key, group.ToList());
IGrouping<T>
自体isIEnumerable<T>
値のシーケンスであるため、Values
プロパティなどはありません。この場合に必要なことは、そのシーケンスをリストに変換することだけです。
list.Add(new DespatchGroup(group.Key, group.ToList());
関連するヒント-他の回答で述べたように、グループ化はIEnumerableなので、特定のインデックスにアクセスする必要がある場合は、group.ElementAt(i)
を使用できます。
これはおそらく多くの人にとって明らかなことですが、うまくいけば何人かの助けになるでしょう!
選択したグループについては、呼び出すことができます
var selectedGroupValues=selectedGroup.SelectMany(x=>x);