Получить свойство "значение" в 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 Как я не вижу, как на самом деле добраться до записей данных в группе!
4 ответов:
группа реализует
IEnumerable<T>- в общие случае, просто позвонитеforeachнаgroup. В этой дело, так как вам нуженList<T>:list.Add(new DespatchGroup(group.Key, group.ToList());
нет
Valuesсвойство или подобное, потому что и theIEnumerable<T>последовательность значений. Все, что вам нужно сделать в этом случае преобразовать эту последовательность в список:list.Add(new DespatchGroup(group.Key, group.ToList());
просто связанный совет-так как, как сказали другие ответы, группировка является IEnumerable, если вам нужно получить доступ к определенному индексу, вы можете использовать
group.ElementAt(i).Это, вероятно, очевидно для многих людей, но, надеюсь, это поможет некоторым!
Comments