我使用動態LINQ從給定的列創建用戶爲給定搜索選擇的查詢。動態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或實體框架? – Phil 2012-03-05 18:32:51
使用LINQ到SQL – 2012-03-05 18:51:03