LINQ支持的最大对象是什么

时间:2010-08-26 13:34:54

标签: .net linq

我正在尝试使用LINQ进行某些操作。所以在LINQ中可能会有数百万条记录被使用。

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

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

4 个答案:

答案 0 :(得分:1)

这取决于你在做什么。如果你只是用它来构建其他要处理的东西的查询,比如Fluent NHibernate,那么linq永远不会看到对象本身,所以不会是一个因素。

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

中对这些问题有了很好的概述

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

LINQ AFAIK是以灵活方便的方式查询对象。

语言集成查询...它只是在代码中编写SQL查询,这是一种更好的方法,无需学习SQL的所有vernaculars。

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

如果我错了,请纠正我!

相关问题