我正在尝试使用LINQ进行某些操作。所以在LINQ中可能会有数百万条记录被使用。
在这种情况下使用LINQ是否值得?使用LINQ的最大对象限制是什么?
我正在从数据库中读取记录并检查一些条件并存储在List<Result>
中。结果是一个班级。然后在List<Result>
中执行LINQ查询,例如分组,计数等。因此List<Result>
中可能有最小50,000条记录,所以在这方面是否更好地去LINQ(或)将记录重新插入到db并执行查询?
答案 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只会让您的生活更轻松 - 无论数据大小如何。
如果我错了,请纠正我!