Linq'的GroupBy方法如何延迟执行

本文关键字:何延迟 延迟 执行 方法 GroupBy Linq | 更新日期: 2023-09-27 18:16:26

我发现了这个问题,但是它还没有答案…Linq GroupBy使用什么算法?

既然必须遍历整个源集合以了解所有组,那么它的执行如何被延迟呢?它是否只迭代源集合一次?它使用缓冲区吗?

Linq'的GroupBy方法如何延迟执行

(我假设我们只谈论LINQ到对象)

它仍然是延迟的,直到你开始请求结果,它根本不会读取源集合。但是,当您请求第一个结果时,它确实会读取整个集合。它只读取一次源,并且只向每个元素请求一次分组键。如您所料,所有结果都在内存中缓冲。

我关于GroupBy的Edulinq博客文章(Edulinq基本上是为了教育而重新实现了LINQ to Objects)展示了一个示例实现,尽管这是在ToLookup方面。