使用包含多个选项的实体框架查询

时间:2017-05-09 15:44:02

标签: sql sql-server entity-framework entity-framework-core

使用实体框架返回forename在字符串数组中包含文本的人员列表。

让我们说:

string[] search = new string[] { "bert", "rob" };

和查询

dataContext.People.Where(w => search.Any(a => w.Forename.Contains(a)));

这编译并运行但是该进程实际上是从数据库中调用所有记录,然后对返回的数据执行where子句。这是有道理的。

有没有办法重写查询,以便在SQL中生成where子句?

2 个答案:

答案 0 :(得分:1)

我假设dataContext.People是来自IQueryable的{​​{1}},并且没有涉及具体化说明,例如DbSetToList()

答案在这里:http://www.albahari.com/nutshell/predicatebuilder.aspx

在你的情况下:

AsEnumerable()

答案 1 :(得分:0)

一种方法是使用SqlQuery并执行实际的SQL查询。

dataContext.Database.SqlQuery<People>("SELECT Forename, Lastname FROM myTable WHERE Forename LIKE '%bert%' or Forename LIKE '%rob%'");