结合实体框架SqlQuery和代码中的额外限制

结合实体框架SqlQuery和代码中的额外限制,sql,sql-server,entity-framework,Sql,Sql Server,Entity Framework,我有一个SQL查询 var sql = "Select * From Foo Where Bar = {0}" 我想使用Entity Framework执行此操作,但我想施加一个额外的限制,以查看列Id是否在某个范围内: List<int> ids = ...; var MyFoos = context.Foos.SqlQuery<Foo>(sql).Where(x => ids.Contains(x.Id)); 列表ID=。。。; var MyFoos=con

我有一个SQL查询

var sql = "Select * From Foo Where Bar = {0}"
我想使用Entity Framework执行此操作,但我想施加一个额外的限制,以查看列Id是否在某个范围内:

List<int> ids = ...;
var MyFoos = context.Foos.SqlQuery<Foo>(sql).Where(x => ids.Contains(x.Id));
列表ID=。。。;
var MyFoos=context.Foos.SqlQuery(sql).Where(x=>ids.Contains(x.Id));

这可能会导致从数据库进行有效的选择,还是会首先执行整个“Select*from Foo Where Bar={0}”,然后才过滤ID?

SQL中的SQL语句将在数据库端执行,结果将返回给客户端

过滤器
,其中(x=>ids.Contains(x.Id))sql
查询的结果在客户端执行code>

。其中
将不会转换为SQL


我在一个类似的查询中验证了这一点。

我的期望是后者,因为查询是硬编码的,而不是EF本身生成的,因此没有编译方法将查询改进为单个sql ReadThank,我肯定会避免这样做!