我一直在阐明ILookup<TKey, TVal>和IGrouping<TKey, TVal>之间的差异,而且我很好奇,如果我现在正确地理解它的话。 LINQ通过生成IGrouping项目的序列,同时也给了我一个ToLookup扩展方法来加强这个问题。 所以直到我看得更仔细,才觉得它们是一样的。 var q1 = from n in N group n by n.MyKey into g select g; // q1 is IEnumerable<IGrouping<TKey, TVal>> 这相当于: var q2 = N.GroupBy(n => n.MyKey, n => n); // q2 is IEnumerable<IGrouping<TKey, TVal>> 看起来很像: var q3 = N.ToLookup(n => n.MyKey, n => n); // q3 is ILookup<TKey, TVal> […]
我有一个像数据结构 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!
我有一个关于IGrouping和Select()方法的问题。 可以说我有这样的IEnumerable<IGrouping<int, smth>> : var groups = list.GroupBy(x => x.ID); 其中list是一个List<smth> 。 现在我需要以某种方式将每个IGrouping值传递给另一个列表。 foreach (var v in structure) { v.ListOfSmth = groups.Select(…); // <- ??? } 任何人都可以build议如何从IGrouping<int, smth>在这样的上下文中获取值( List<smth> )?