2009-06-06 17 views
0

テキストボックスにキーワードを入力すると、データベーステーブル内の項目のリストをユーザに提供しようとしています。私が現在持っている問題は、ユーザーが複数のキーワードを入力することができ、データベースへの往復を1回しか実行できず、いくつかのキーワード(OR演算)の一致結果を取得できるようにすることです。 1つのキーワードごとにデータベースにアクセスすることなく、このようなタスクを実行する方法はありますか?"where In" with linq to sql

答えて

1

私はかなりの提供postを見つけました私が達成しようとしていたことに対する良い解決策。ご協力ありがとうございました!

0

私はthis pageがC#でLINQのものを見つけようとしているときに非常に役に立ちます。それはthe following syntax示唆:

var results = from Item i in myCollectionOfItems 
       where i.OneThing = aGoodThing || i.SomeStuff != theBadStuff 
       select i; 

編集:申し訳ありませんが、質問を誤解 - 私はOR動作の要求と一致するように更新しました。 (私は、リファレンス・ページに||構文を見つけることができませんでしたが、私はそれが動作すると仮定します。これcompiles on my machine ...

5

は(入って)あなたの友達です。

List<string> keywords = new List<string>(); 
keywords.Add("foo"); 
keywords.Add("bar"); 

var results = from item in db.Table 
       where keywords.Contains(item.Description) 
       select item; 

...あなたが与え

WHERE [t0].[Description] IN (@p0, @p1) 
+0

説明にキーワード... –

+0

が含まれているかどうかを確認したい場合は動作しません。Googleの提案する行の中に何か持っています。キーワードは完全一致である必要はありません – ak3nat0n

0

キーワード検索のためのあなたの出力をトークン化。

それからちょうどWHERE条件に言い続けるかのC#(||演算子)でできます。

var query = from row in mytable 
      where (row.column == a) || (row.column == b) || //.... etc 
      select row 
0

つまりあなたはそれを試みることができる:

List<string> keywords = new List<string>(); 
keywords.Add("foo"); 
keywords.Add("bar"); 

var results = from item in db.Table 
       where keywords.Exists(k => item.Description.Contains(k)) 
       select item; 

しかし、私はそれをSQLに変換されますわからないんだけど...