在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);