在 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,因为我看不到如何实际获得小组内的数据记录!

129950 次浏览

该组实现 IEnumerable<T>-在 将军的情况下,只需通过 group调用 foreach。在 这个的情况下,因为你需要一个 List<T>:

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

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

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

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

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

对于任何选定的组,可以调用

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