首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架- Expression

实体框架- Expression
EN

Stack Overflow用户
提问于 2017-09-21 17:09:43
回答 1查看 225关注 0票数 1

考虑这两个代码:

使用Func<T, bool>

代码语言:javascript
复制
public IQueryable<Blog> GetBlogs(Func<Blog, bool> predicate)
{
   return context.Blogs.Where(predicate).AsQueryable();
}

使用Expression<Func<T, bool>>

代码语言:javascript
复制
public IQueryable<Blog> GetBlogs(Expression<Func<Blog, bool>> predicate)
{
   return context.Blogs.Where(predicate); // No need of AsQueryable
}

因此,在第一种情况下,实体框架总是会从数据库返回所有对象,对吗?那么,调用AsQueryable有什么意义呢?反正有用吗?它类似于Expression版本吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-21 17:12:50

反正有用吗?

不是的。

它所做的只是欺骗该方法的调用者,因为他们认为他们有一个IQueryable,它将转换应用到数据库中的SQL运行的任何附加操作符,而实际上,您只有一个穿着羊皮的IEnumerable。如果您真的希望在内存中执行操作,而不是在DB中执行操作,那么至少要明确地将IEnumerable类型为IEnumerable

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46349567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档