在IGrouping中获取“Value”属性

我有一个像数据结构

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因为我无法看到如何实际获得组内的数据logging!

该组实现IEnumerable<T> – 在一般情况下,只需调用foreach 。 在这种情况下,因为你需要一个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);