【发布时间】:2013-03-22 00:49:12
【问题描述】:
我对 IEnumerable 和 IQueryable 以及与 Entity Framework 的用法交换有点困惑。我已经尝试尽可能多地在这个主题上进行谷歌搜索,但它似乎没有帮助。这是我的情况。
我有一个函数(MyClass 是一个EntityObject):
IEnumerable<MyClass> GetMyClasses(int id) {
return GetQuery().Where(p => p.Id==id);
}
IQueryable<MyClass> GetQuery() {
// returns an IQueryable list here
}
现在我的问题是。鉴于我在这里返回一个 IEnumerable 而不是 IQueryable,当使用 ToList() 执行语句时,生成的底层 SQL 是否会考虑 Id == id 语句,因此仅返回过滤器items 还是会将数据库的所有对象带入内存并在该列表上执行 Where 子句?
有任何帮助,甚至是指向描述此内容的资源的指针吗?
【问题讨论】:
-
这取决于 EF 返回的 IQueryable 的实现,因此正确答案将特定于 EF 实现。我将
Where应用于查询,但我不确定。
标签: c# entity-framework ienumerable iqueryable