-2

私のコードは次のようになり、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));

値は返されますが、有効な結果が得られません。

たとえば、'example' を検索すると、'An Example Bank' は見つかりますが、'Example Personal Finance (EPF)' は見つかりません。

4

2 に答える 2

1

問題は、検索条件の前後に文字以外の文字が必要であり、検索条件がデータベース フィールドの先頭または末尾にある場合は機能しないことだと思います。

したがって、Example を検索すると、「An Example Bank」は見つかりますが、「Example Bank」は見つかりません。

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)
         )
于 2012-08-07T18:42:18.690 に答える
0

Contains() メソッドを使用しないのはなぜですか?

var f = "example"
var q = from x in MyTable where x.Search_Col.Contains(f) select x;
于 2016-02-12T08:39:12.100 に答える