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

标签 c# linq group-by

我找到了这个问题,但还没有答案... 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/

相关文章:

c# - 奇怪的 DLL + InterropServices 问题

c# - Java 和 C# 处理方法绑定(bind)方式的显着差异背后的解释是什么?

c# - VS Code Omnisharp.MsBuild.Projectmanager 无法加载程序集 System.Numerics.Vectors 4.1.3.0

c# - 使用 Linq 从 3 个集合创建项目

asp.net - 将 Linq 数据查询转换为对象类型

mysql - 如何在 mysql 查询中获取 GROUP BY 的最新索引?

c# - 存储库模式上泛型的多态性

c# - 使用 Linq to XML 生成动态 WPF

solr - 如何在 Solr 中对组求和?

ruby-on-rails - Rails : Search method breaks PostgreSQL, 替代方案?