我的代码如下,在like子句中使用正则表达式:
string f = "example";
var likestr = string.Format("%[^a-zA-Z]{0}[^a-zA-Z]%", f);
var q = SearchColumn.Where(x => SqlMethods.Like(x.Search_Col, likestr));
虽然它返回值,但它会错过有效的结果。
例如,在搜索“示例”时,它会找到“示例银行”,但找不到“示例个人财务(EPF)”。
答案 0 :(得分:1)
我猜测问题是你的需要一个字符而不是字母,而不是在你的搜索条件之前和之后,如果标准是在开头或结尾处,那么它将不起作用你的数据库字段。
因此,如果您搜索示例,则会找到“示例库”,但不会找到“示例库”。
我不确定是否有更快的方式使用Sql,但这应该有效。
var f = "example"'
var likestr1 = string.Format("%[^a-zA-Z]{0}[^a-zA-Z]%", f);
var likestr2 = string.Format("%[^a-zA-Z]{0}", f);
var likestr3 = string.Format("{0}[^a-zA-Z]%", f);
var q = SearchColumn.Where(x =>
SqlMethods.Like(x.Search_Col, likestr1) ||
SqlMethods.Like(x.Search_Col, likestr2) ||
SqlMethods.Like(x.Search_Col, likestr3) ||
(x.Search_Col == f)
)
答案 1 :(得分:0)
为什么你不使用Contains()方法?
var f = "example"
var q = from x in MyTable where x.Search_Col.Contains(f) select x;