1

我有一个 SQL 查询

var sql = "Select * From Foo Where Bar = {0}"

我想使用实体框架执行此操作,但我想施加额外的限制,以查看列 ID 是否在某个范围内:

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

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

4

1 回答 1

2

里面的SQL语句sql会在数据库端执行,结果会返回给客户端。

然后过滤器.Where(x => ids.Contains(x.Id));将针对您的sql查询结果在客户端执行。

.Where不会被翻译成 SQL 。

我在类似的查询中使用SQL Profiler验证了这一点。

于 2013-10-01T23:01:37.963 回答