Ответ 1
Группа реализует IEnumerable<T>
- В общем случае просто вызовите foreach
по group
. В этом случае, поскольку вам нужен List<T>
:
list.Add(new DespatchGroup(group.Key, group.ToList());
У меня есть структура данных вроде
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
. В этом случае, поскольку вам нужен List<T>
:
list.Add(new DespatchGroup(group.Key, group.ToList());
Нет свойства Values
или подобного, потому что сама IGrouping<T>
является последовательностью значений IEnumerable<T>
. Все, что вам нужно сделать в этом случае, - это преобразовать эту последовательность в список:
list.Add(new DespatchGroup(group.Key, group.ToList());
Просто связанный совет - поскольку, как говорили другие ответы, группировка является IEnumerable, если вам нужно получить доступ к определенному индексу, вы можете использовать group.ElementAt(i)
.
Это, вероятно, очевидно для многих людей, но, надеюсь, это поможет немногим!
Для любой выбранной группы вы можете вызвать
var selectedGroupValues=selectedGroup.SelectMany(x=>x);