【发布时间】:2014-05-12 16:02:26
【问题描述】:
我正在尝试在实体查询中执行 LIKE 子句。 examples 我见过使用动态 linq 来做这种事情,但是我的代码......
var query = context.StudySet
.Where("it.PatientName LIKE @patientName", new ObjectParameter("patientName", patientName);
...用
给我一个 System.Linq.Dynamic.ParseExceptionAdditional information: Expression of type 'Boolean' expected
context 是 EF 6 代码优先的 DbContext,patientName 是字符串
请告诉我我的代码有什么问题?
【问题讨论】:
-
如果不使用动态 LINQ,
var query = context.StudySet.Where((it) => it.PatientName.Contains(patientName))之类的东西不适合你吗? -
patientName 的值将来自一个采用通配符的搜索框。我想我可以拆分字符串并构建一个结合 StartsWith、Contains、EndsWith 等的查询。我只是认为 LIKE 代码少了一点。
-
说的有道理,拆分听起来一点都不好玩!也许
SqlMethods.Like会起作用,就像this answer 一样?只是不确定它是否适用于 EF。 -
不,对,它不起作用,不幸的是它只是 Linq to SQL。
-
对不起 - 我想我正在走你已经走过的路!使用
SqlQuery和原始SQL 怎么样,比如var query = context.StudySet.SqlQuery("select * from StudySet where PatientName LIKE @patientName", new SqlParameter("@patientName", patientName));?
标签: linq entity-framework dynamic-linq