假设我有以下方法。

public IEnumerable<T> GETEVERYTHING()
{
     return _db.AsEnumerable();
}


然后我在代码中调用该方法

GETEVERYTHING().Where(w => w.Active == true);

它是否从数据库获取所有内容,对其进行缓存并筛选结果,否则它将在调用数据库之前筛选结果。例如:它会在数据库中调用SELECT * FROM table还是SELECT * FROM table WHERE Active = 1

对不起,英语不好,我们将不胜感激。

最佳答案

呼唤

return _db.AsEnumerable();


因为它是一个继承自IEnumerable的IQueryable,所以并没有真正使查询执行。调用.ToList()将会强制执行,如果有帮助的话

编辑:正如评论中指出的那样,自行调用where方法不应强制执行MOST的时间。

10-06 05:08