Получить свойство "значение" в 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 Как я не вижу, как на самом деле добраться до записей данных в группе!

682   4  

4 ответов:

группа реализует IEnumerable<T> - в общие случае, просто позвоните foreach на group. В этой дело, так как вам нужен List<T>:

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

нет Values свойство или подобное, потому что и the IEnumerable<T> последовательность значений. Все, что вам нужно сделать в этом случае преобразовать эту последовательность в список:

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

просто связанный совет-так как, как сказали другие ответы, группировка является IEnumerable, если вам нужно получить доступ к определенному индексу, вы можете использовать group.ElementAt(i).

Это, вероятно, очевидно для многих людей, но, надеюсь, это поможет некоторым!

для любой выбранной группы можно вызвать

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

Comments

    Ничего не найдено.