在IGrouping中获取“Value”属性

时间:2011-01-26 12:20:18

标签: c# linq data-structures 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 个答案:

答案 0 :(得分:139)

小组实施IEnumerable<T> - 在一般案例中,只需通过foreach调用group即可。在 this 的情况下,因为您需要List<T>

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

答案 1 :(得分:28)

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

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

答案 2 :(得分:17)

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

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

答案 3 :(得分:11)

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

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