- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直无法阐明 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>
我在下面的类比中是否正确?
IGrouping<TKey, TVal>
是单个组(即键控序列),类似于 KeyValuePair<TKey, TVal>
其中值实际上是一系列元素(而不是单个元素)IEnumerable<IGrouping<TKey, TVal>>
是这些的序列(类似于迭代 IDictionary<TKey, TVal>
ILookup<TKey, TVal>
更像是一个IDictionary<TKey, TVal>
其中值实际上是一个元素序列最佳答案
是的,所有这些都是正确的。
和ILookup<TKey, TValue>
还扩展了 IEnumerable<IGrouping<TKey, TValue>>
因此您可以遍历所有键/集合对以及(或代替)查找特定键。
基本想到ILookup<TKey,TValue>
就像IDictionary<TKey, IEnumerable<TValue>>
.
请记住 ToLookup
是“立即执行”操作(立即执行),而 GroupBy
被推迟。碰巧的是,当您开始拉取 IGrouping
时,使用“拉取 LINQ”的方式。来自 GroupBy
的结果,它无论如何都必须读取所有数据(因为你不能中途切换组),而在其他实现中它可能能够产生流式结果。 (在 Push LINQ 中确实如此;我希望 LINQ to Events 是相同的。)
关于c# - ILookup<TKey, TVal> 与 IGrouping<TKey, TVal>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1337539/
我有一个序列 IGrouping IEnumerable> sequence = ...; 和谓词 Func predicate = ...; 如何过滤Element s 通过将结果保持为 IEnum
我有一个序列 IGrouping IEnumerable> sequence = ...; 和谓词 Func predicate = ...; 如何过滤Element s 通过将结果保持为 IEnum
尝试使用 Automapper 对按两个属性分组的分组查询进行投影时出现以下错误 Missing map from IGrouping`2 to PlayerWarScore. Create usin
我想使用 Linq 创建一个函数来汇总传入的值序列。该函数应如下所示: IDictionary> Summarize(IEnumerable values) { return values
我有一个 LINQ 问题,这让我有点困惑。我可以看到很多替代方法来找到解决方案,但我想尝试解决问题,因为它困扰着我! public enum AnimalType { Cat, Dog
我有一个 IGrouping 类型的对象,想在不更改对象类型的情况下对组内的元素进行排序。 换句话说,我有 var tmp = group.OrderBy(x => x); 与 group类型 IGr
大家好。 假设我有以下类(class): public class ObjectA { public string PropertyA { get; set; }
我有一些代码可以创建列表列表。该列表是这种类型的: List> GroupedDeviceList = new List>(); 但需要返回如下类型的结果: IEnumerable> 这是否可以通
我一直在查看此处的其他线程以了解如何在 linq 中执行 GroupBy。我正在遵循适用于其他人的 EXACT 语法,但它不起作用。 这是查询: var results = from p in pen
我正在尝试创建一个 WCF 数据服务 ServiceOperation,它在服务器端进行分组,然后将数据发送到客户端。 当我尝试调用它(甚至连接到该服务)时,出现错误。它说它不能构造接口(interf
在 IEnumerable包含定义为: class Appointment { public string Name { get; set; } public DateTime LastMod
我目前有: UIEnumerable > 从这段代码: var queryDupFiles = from file in fileList group file by new Portable
IEnumerable> datas = list.GroupBy(x => x.PropertyXYOfMyClass); // get all items from each group fore
我目前有: UIEnumerable > 从这段代码: var queryDupFiles = from file in fileList group file by new Portable
IEnumerable> datas = list.GroupBy(x => x.PropertyXYOfMyClass); // get all items from each group fore
我有两个类: class Foo { public Bar SomeBar { get; set; } } class Bar { public string Name { get;
IGrouping 支持 ElementAt 方法来索引分组的集合。那么为什么方括号运算符不起作用呢? 我可以做类似的事情 list.GroupBy(expr).Select(group => gr
如何直接从 IGrouping 中删除对象 IGrouping ? 目前我所知道的唯一方法是生成一个没有相关元素的新 IGrouping,但我不喜欢这种方式,因为它会在我的应用程序中引起一些麻烦。 有
我已经在列表上应用了 IGrouping<> - 它看起来像这样: IEnumerable> Tiers { get { return ActiveNodes.GroupBy(x => new
这个问题在这里已经有了答案: ILookup vs. IGrouping (3 个答案) 关闭 9 年前。 ILookup 和 IGrouping 是非常相似的 Linq 接口(interface)
我是一名优秀的程序员,十分优秀!