我是使用动态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时,是否有一种方法可以在搜索字符串中使用通配符?
谢谢!