【发布时间】:2012-03-05 18:23:10
【问题描述】:
我正在使用动态 LINQ 从用户为给定搜索选择的给定列创建查询。
例如简化代码例如:
var counter = 0;
var predicate = string.Empty;
foreach(var field in selectedFields)
{
predicate += field + ".Contains(@" + counter + ") ||";
// logical OR, without it the SQL generates AND
}
predicate = predicate.Remove(predicate.LastIndexOf("||", 2));
query = query.Where(predicate, searchvalues);
此代码生成给定的 SQL 查询
(([t0].[Field1] LIKE 'searchstring') OR ([t0].[Field2] LIKE 'searchstring'))
这是正确的,虽然我想要做的是能够使用通配符,当我尝试输入比方说百分比字符时,生成的 SQL 是
(([t0].[field1] LIKE 'searchstring' ESCAPE '~') OR ([t0].[field2] LIKE 'searchstring' ESCAPE '~'))
在使用动态 L2S 时,有没有办法在搜索字符串中使用通配符?
问候
【问题讨论】:
-
您使用的是 Linq to Sql 还是 Entity Framework?