2011-10-20 14 views
2

ユーザーは、旅行先で探すキーワードをテキストボックスに入力します。LINQで動的クエリを構築する方法は?

私はそれようにクエリを構築するためにコードを修正するにはどうすればよい
where d.Element("Description").Value.Contains(textBox1.Text) 

:時々、彼らはちょうどこのコードは、単一のキーワードのために働く、「ホット」時には「高温多湿嵐」など

を入力します任意の数のキーワードに対して機能しますか?テキストボックスに入力されたすべてのキーワードは一致する必要があります。

答えて

1

エントリのいずれかに該当する場合、私はあなたが検索する意味推測:

を3210
where textBox1.Text.Split(' ').All(t => d.Element("Description").Value.Contains(t)) 
+0

私はすべてのキーワードを探していますが、すべてではありません。ありがとう。 – user776676

1
var keywords = textBox1.Text.Split(' '); 
//------- 
.Where(e => keywords.All(w => d.Element("Description").Value.Contains(w))) 

あなたはAllまたはAnyメソッドを使用することができます。それはあなたのニーズに依存します。

4

まず私は、あなたがtextBox1.Text内の単語を壊すとContainsAnyにそれを養うためにString.Splitメソッドを使用することができますString

public static bool ContainsAny(this string source, IEnumerable<string> values) { 
    foreach (var cur in values) { 
    if (source.Contains(cur)) { 
     return true; 
    } 
    } 
    return false; 
} 

に複数の値を探してカプセル化するStringためContainAny拡張メソッドを定義したいです

where d.Element("Description").Value.ContainsAny(textBox1.Text.Split(' ')); 
関連する問題