假设我有以下方法。
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的时间。