我找到了这个问题,但还没有答案... What algorithm does Linq GroupBy use?
由于您必须遍历整个源集合才能了解所有组,因此如何推迟执行?它会只迭代一次源集合吗?它是否使用缓冲区?
最佳答案
(我假设我们只是在谈论 LINQ to Objects。)
它仍然延迟,直到您开始询问结果,它根本不会读取源集合。但是,是的,一旦您请求第一个结果,它确实会读取整个 集合。它只读取一次源,并且只向每个元素询问一次其分组键。如您所料,所有结果都缓冲在内存中。
我的 Edulinq blog post on GroupBy (Edulinq 基本上是出于教育目的对 LINQ to Objects 的重新实现)显示了一个示例实现,尽管它是根据 ToLookup
进行的。
关于c# - Linq 的 GroupBy 方法如何延迟执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40426751/