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

时间:2016-11-04 15:46:15

标签: c# linq group-by

我发现了这个问题,但它还没有答案...... What algorithm does Linq GroupBy use?

由于您必须遍历整个源集合以了解所有组,因此如何延迟执行?它只会迭代源集合一次吗?它是否使用缓冲区?

1 个答案:

答案 0 :(得分:7)

(我假设我们只讨论LINQ to Objects。)

在您开始询问结果之前,它仍然是延迟的,它根本不会读取源集合。但是,是的,一旦你要求第一个结果,它确实会读取整个集合。它只读取一次源,它只询问每个元素的分组键一次。正如您所怀疑的那样,所有结果都会缓存在内存中。

我的Edulinq blog post on GroupBy(Edulinq基本上是为了教育而重新实现LINQ to Objects)显示了一个示例实现,尽管这是ToLookup