Linq to sql LINQ到SQL性能问题

Linq to sql LINQ到SQL性能问题,linq-to-sql,Linq To Sql,我从数据库中获取一个IQueryable,然后从第一个IQueryable中获取另一个IQueryable,也就是说,我正在过滤第一个IQueryable。 我的问题是-这会影响性能吗?代码将调用数据库多少次?多谢各位 代码: 您给出的代码永远不会调用数据库,因为您从未在任何代码中使用查询结果 IQueryable集合在您迭代之前不会被填充……并且您不会迭代代码样本中的任何内容(啊,惰性初始化的美妙之处) 这也意味着,这些语句中的每一条都将作为自己对数据库的查询来执行,这与执行两个完全独立的查询

我从数据库中获取一个IQueryable,然后从第一个IQueryable中获取另一个IQueryable,也就是说,我正在过滤第一个IQueryable。 我的问题是-这会影响性能吗?代码将调用数据库多少次?多谢各位

代码:


您给出的代码永远不会调用数据库,因为您从未在任何代码中使用查询结果

IQueryable集合在您迭代之前不会被填充……并且您不会迭代代码样本中的任何内容(啊,惰性初始化的美妙之处)


这也意味着,这些语句中的每一条都将作为自己对数据库的查询来执行,这与执行两个完全独立的查询相比,不会产生性能成本。

因此不能替代开发人员工具。有许多好的免费工具能够准确地告诉你这段代码翻译成什么以及它是如何工作的。在这个方法上使用Reflector,看看生成了什么代码,并为您自己解释接下来会发生什么。

谢谢您的注释。刚刚添加了最后一行代码-我将返回“filtered”IQueryable.@Bruno-这仍然不会导致查询执行。在方法调用的结果在视图中迭代之前,查询(将是单个查询)不会执行。剩下的显示你的一天过得不好。是的,我后悔后来发了这篇文章。我会把它删掉。请注意,这并不是指人身攻击或居高临下的语气。不过,我觉得这样读很容易。我道歉;我无意冒犯你。只是,这是一个反复出现的模式,因此,大部分问题都源于提问者缺乏深入挖掘和使用可用工具的动力。嗨,詹姆斯,谢谢。我不知道这个工具,我听从了你的建议,它真的帮了我很多。下次来之前,我会使用它。再次感谢你。
DataContext _dc = new DataContext();

IQueryable offers =
(from o in _dc.Offers
select o);

IQueryable filtered =
(from o in offers
select new { ... } );

return View(filtered);