C# 使用SqlMethods匹配整个单词

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

我的代码如下,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)“。

我猜问题在于,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;