我怎么做以下事情:
var query = from a in OBJ where a.ID == ID select c;
它是< 1秒,但是一旦我添加了IQueryable函数,它会将它增加到~3秒?
var query = (from a in OBJ where a.ID == ID select c).SingleOrDefault();
当我使用FirstOrDefault()时会发生同样的情况。
答案 0 :(得分:10)
此:
var query = from a in OBJ where a.ID == ID select c;
...只需代表查询。它根本不会执行它。它应该炽热快速 - 不仅仅是“不到一秒钟”,而是“几乎无法估量的快速。”
此:
var query = (from a in OBJ where a.ID == ID select c).SingleOrDefault();
...获取实际数据,这意味着它必须执行查询。
通常,LINQ尽可能使用延迟执行。这只是一个例子。搜索LINQ延迟执行,你将获得加载的文章命中数。潜入任何最适合您阅读风格的人:)