我有一个像
这样的数据结构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
,因为我无法了解如何实际访问群组中的数据记录!
答案 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);