170

我有一个像

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

4 回答 4

197

该组实现IEnumerable<T>- 在一般情况下,只需调用foreach. group这种情况下,因为您需要一个List<T>

list.Add(new DespatchGroup(group.Key, group.ToList());
于 2011-01-26T12:23:14.693 回答
41

没有Values属性或类似的,因为它IGrouping<T>本身就是值的IEnumerable<T>序列。在这种情况下,您需要做的就是将该序列转换为列表:

list.Add(new DespatchGroup(group.Key, group.ToList());
于 2011-01-26T12:23:40.653 回答
33

对于任何选定的组,您可以致电

var selectedGroupValues=selectedGroup.SelectMany(x=>x);
于 2015-11-30T15:52:30.577 回答
23

只是一个相关提示-因为正如其他答案所说,分组是一个 IEnumerable,如果您需要访问可以使用的特定索引group.ElementAt(i)

这对很多人来说可能是显而易见的,但希望它会帮助一些人!

于 2012-10-22T19:34:02.200 回答