C# 使用SqlMethods匹配整个单词
我的代码如下,like子句中有一个正则表达式:C# 使用SqlMethods匹配整个单词,c#,asp.net,linq,C#,Asp.net,Linq,我的代码如下,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)“。我猜问题在于,l
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)“。我猜问题在于,like在搜索条件前后都需要一个字母以外的字符,如果条件位于数据库字段的开头或结尾,则该字符将不起作用 因此,如果您搜索示例,您会找到“示例银行”,但不会找到“示例银行” 我不确定是否有更快的方法使用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)
)
为什么不使用Contains()方法
-1:如果没有“有效结果”的例子,这个问题是很没用的,它“漏掉了”这里的
likestr的实际值是多少?@ChrisFarmer刚刚编辑了我的帖子。但是likestr
永远不能接受“示例”的值给定您的string.Format
调用,也许您可以描述您在表达式中使用字符集实际要完成的任务。
var f = "example"
var q = from x in MyTable where x.Search_Col.Contains(f) select x;