【问题标题】:what is the maximum objects supported by LINQLINQ 支持的最大对象是多少
【发布时间】:2025-12-26 16:10:06
【问题描述】:

我正在尝试将 LINQ 用于某些操作。所以在 LINQ 中可能会用到数百万条记录。

那么在这种情况下是否值得使用 LINQ?使用 LINQ 的最大对象限制是多少?

我正在从数据库中读取记录并检查一些条件并存储在List<Result> 中。结果是一堂课。然后在List<Result> 中执行 LINQ 查询,如分组、计数等。所以在List<Result> 中可能有最少 50,000 条记录,所以在这是否更好地使用 LINQ(或)将记录重新插入到 db 并执行查询?

【问题讨论】:

  • LINQ 不一定会将您的整个数据库复制到内存中,也不会将您的对象永远保留在内存中。并发内存对象的最大限制完全取决于您的硬件配置。
  • 哪个 LINQ? LINQ 到对象? SQL?实体?
  • 我正在从数据库中读取记录并检查一些条件并存储在 List 中。结果是一堂课。然后在 List 中执行 LINQ 查询,例如分组、计数等。因此,List 中可能有最少 50,000 条记录,所以在此是否更好地使用 LINQ(或)将记录重新插入到 db 并执行查询?

标签: .net linq


【解决方案1】:

LINQ AFAIK 是关于以一种灵活且简单的方式查询对象。

语言集成查询...它只是用代码编写您的 SQL 查询,这是一种更好的方式,您无需学习所有 SQL 术语。

只要您的查询逻辑合理,LINQ 只会让您的生活更轻松 - 无论数据大小如何。

如有错误请指正!

【讨论】:

    【解决方案2】:

    如果您的数据库中有“数百万条记录”,您当然不希望将它们全部返回给您的 LINQ 客户端进行处理。但是,无论您使用什么技术,都是如此——Linq、Entity Framework、NHibernate、ADO.Net 等。

    如果您明智地使用 LINQ(即过滤您的结果),那么后备存储中的行数在很大程度上是无关紧要的。

    【讨论】:

      【解决方案3】:

      LINQ 本身适用于 IEnumerable 类型,因此可以处理任何大小的集合(即使是无限的序列,只要结果是可计算的 - 例如,您可以从无限的数字序列中获取前五个数字,但找不到最大)。

      真正的瓶颈和性能问题取决于您从哪里获取数据。例如,LINQ to SQL 将尝试生成 SQL 查询以将大部分工作推送到数据库中,而 LINQ to 对象将要求所有信息都在内存中,并且在处理数百万条记录时会慢得多。

      【讨论】:

        【解决方案4】:

        这取决于你用它做什么。如果您仅使用它来构造查询以处理其他要处理的内容,例如 Fluent NHibernate,那么 linq 将永远不会看到对象本身,因此不会成为一个因素。

        如果您使用 linq 来处理具有数百万个对象的对象,您可能希望避免一次将所有对象加载到内存中。在这种情况下,您将只想使用惰性 linq 查询。 Jon 在他的文章Just how lazy are you?

        中很好地概述了这些问题

        【讨论】:

          最近更新 更多