c# linq data-structures igrouping

c# - Obtiene la propiedad "Valor" en IGrouping



linq data-structures (4)

Tengo una estructura de datos como

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

Y estoy tratando de hacer ...

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); }

¡Obviamente no entiendo IGrouping ya que no puedo ver cómo llegar a los registros de datos dentro del grupo!


El grupo implementa IEnumerable<T> - En el caso general , simplemente llame a foreach sobre el group . En este caso, ya que necesita una List<T> :

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


No hay propiedad de Values o similar porque IGrouping<T> sí mismo es la secuencia de valores IEnumerable<T> . Todo lo que necesita hacer en este caso es convertir esa secuencia en una lista:

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


Para cualquier grupo seleccionado, puede llamar

var selectedGroupValues=selectedGroup.SelectMany(x=>x);


Solo un consejo relacionado, ya que, como han dicho otras respuestas, la agrupación es un IEnumerable, si necesita acceder a un índice específico, puede usar group.ElementAt(i) .

Esto es probablemente obvio para mucha gente, pero espero que ayude a algunos.