0

Entity Framework 5を使用してテーブルの1つを検索したいのですが、クエリに含まれる単語の数はわかりませんが、すべての単語と一致させたいと思います。

クエリ=こんにちは

SELECT * FROM [table] WHERE [column] LIKE '%hello%'

query = hello world

SELECT * FROM [table] WHERE [column] LIKE '%hello%' AND [column] LIKE '%world%'

関数PATINDEXは知っていますが、十分に機能しません。なんで?お見せします:

SELECT * FROM person WHERE PATINDEX('%test%.com%', email)>0

「test@email.com」と一致しますが、検索語の順序が逆の場合、この人は見つかりません。

SELECT * FROM person WHERE PATINDEX('%.com%test%', email)>0

EFを使用してこのクエリを作成する最も効率的な方法は何ですか?

4

2 に答える 2

1

SQLで同等のことを行うために.Containsを使用できるエンティティにlinqを使用する

 table(x => x.column).Where(y => y.ColumnName).Contains("hello");

機能するはずのwhere句を忘れてしまいました。

于 2013-01-23T13:56:17.680 に答える
0

foreachループでクエリを作成できます。

var words = new[] {"com", "test"};
var table = <your initial DbSet or ObjectSet>

foreach (var word in words)
{
    string word1 = word; // prevent modified closure.
    table = table.Where(x => x.column.Contains(word1));
}

var result = table.ToList(); // Enumerate the composed linq query.

Contains関数は、検索語を文字で囲んで に変換しLIKEます%

于 2013-01-23T15:46:08.583 に答える