2011-12-09 8 views
3

製品サイトの検索機能を構築しました。検索は正常に動作します。最近では、データベースにSearchTermフィールドを追加しました。 検索語データ例:「作業靴ブルーブラックギア」という用語=「靴」<は場合 現在のコードが検索機能。1つのフィールド内の用語を含む。

pM = (from p in ctx.Products 
         where 
          p.productSearchField.Contains(term) || 
          p.productName.Contains(term) 
         select p).ToList() 

ある - 作品 - 用語は=「作業靴」<場合

作品

用語「黒い靴」<は機能しません。

また、SearchTermデータをコンマで区切りますが、それは機能しませんでした。 アドバイスはありますか?

答えて

3

用語を単一の用語に分割します。どの試合かどうかを確認してください:

term.Split(' ').Any(i => p.productSearchField.Contains(i)) 

それともすべての単語が一致しなければならない場合:

term.Split(' ').All(i => p.productSearchField.Contains(i)) 


EDIT

   var terms = term.Split(' '); 
      pM = (from p in ctx.Products 
        where 
         terms.All(i => p.productSearchField.Contains(i)) || 
         p.productName.Contains(term) 
        select p).ToList() 
+0

私はeitheroneの実行中にエラーを取得しています:エンティティへのLINQは認識しません。メソッド 'System.String [] Split(Char [])'を使用して、このメソッドをストア式に変換することはできません。 –

+1

私はそれについて心配していました。ドキュメントは変だけど、私の編集でそれを修正する必要があります。 – Joe

+0

が働いた!ありがとう。 –

関連する問題