0

テキスト ボックスに基づいてコレクションを検索したい。ユーザーは、複数の単語を任意の順序で入力できるようにする必要があります。コレクション内の文字列が「What a happy day」で、ユーザーが「day What」と入力すると、文字列が表示されます。これで、許可される単語数 (たとえば、許可される単語は 3 つだけ) を次のようにハードコーディングする方法がわかりました。

 nc = oc.Where(X => X.SearchData.IndexOf(words[0]) > -1 || X.SearchData.IndexOf(words[1]) > -1 || X.SearchData.IndexOf(words[2]) > -1);

注:はい、配列ワードに実際の3つの値があることを確認するために保護する必要があることはわかっていますが、それは表示されていません。

これの問題は、ユーザーを制限することであり、私はそれをしたくありません。ユーザーが 10 または 20 の項目を検索したい場合は、それで問題ありません。

コレクション oc の Where ステートメントを動的に作成する方法はありますか?

ありがとう

4

3 に答える 3

0

私のコメントと@Alirezaからの回答によると、@Slaksの回答は部分的な単語で一致すると思います

あなたは試すことができます

oc.Where(phrase => phrase.Split().Intersect(SearchData.Split()).Count() > 0);

LINQには常にさまざまな方法があります...

于 2013-10-16T23:01:25.473 に答える