我从我的数据库中获得IQueryable然后我从第一个获得另一个IQueryable - 也就是说,我正在过滤第一个IQueryable。 我的问题是 - 这会影响表现吗?代码会调用数据库多少次?谢谢。
代码:
DataContext _dc = new DataContext();
IQueryable offers =
(from o in _dc.Offers
select o);
IQueryable filtered =
(from o in offers
select new { ... } );
return View(filtered);
答案 0 :(得分:2)
您提供的代码永远不会调用数据库,因为您从未在任何代码中使用查询结果。
IQueryable集合在你遍历它们之前不会被填充......并且你没有在代码示例中迭代任何东西(啊,懒惰初始化的美妙)。
这也意味着每个语句都将作为自己的数据库查询执行,这导致执行两个完全独立的查询没有性能成本。
答案 1 :(得分:0)
SO不是开发人员工具的替代品。有许多好的免费工具能够准确地告诉您这段代码的翻译内容以及它的工作原理。在这个方法上使用Reflector并查看生成的代码以及自己的原因。