2016-06-20 9 views
0

Linq where節をSQLで実際に作成することはできますか?同様:Linqを実装する方法Where配列でクエリを行う

int[] ids = { 1, 2, 3, 4, 5};  
var query = from item in db.myTable 
      where item.ID In ids 
      select item; 

私たちは以下のようなキーワードが含まれています使用することができます知っているが、私はそれを再利用するために、テーブルにwhere句を保存することができるように、ローカル配列idsなしでwhere句を分割したいです。私は実際のデータ{1、2、3、4、5}をDBに保存しますが、ローカル変数は保存しません。

int[] ids = { 1, 2, 3, 4, 5};  
var query = from item in db.myTable 
      where ids.Contains(item.ID) 
      select item; 
+0

ですから、配列を使ってWHERE INを行う方法ではなく、別のテーブルの値に基づいてどのように行うのですか? – StriplingWarrior

答えて

1

問合せは、あなただけの代わりに、配列でそれらを持っていることの他のテーブルから値を引くだろう、同様のパターンに従ってください。

var ids = db.someTable.Where(...).Select(e => e.ID); 
var query = from item in db.myTable 
     where ids.Contains(item.ID) 
     select item; 
+0

ユーザーの検索結果としてwhere句をテーブルに保存したいので、ユーザーが再びログインしたときに再実行することができます。ここでの問題は、ローカル変数に依存しているため、ids.Contains(配列)を保存できません。私は実際のデータ値{1、2、3、4、5}を保存したいと思います。上記の例の1行のwhere節を保存することはできますか? –

+0

@ YePeng:そうです。たとえば、UserIdとItemIdを使用して表を作成します。ユーザーとユーザーが選択した項目のエントリを保存します。次に、上記のコードで 'someTable'と言うところで、これらの値を保存したテーブルを照会します。現在のユーザーIDでフィルタリングし、ItemId値を選択します。これにより、後で作成する 'query'の' Contains() '部分で使用できる' IQueryable 'が得られます。 – StriplingWarrior

+0

私は本当にすべてのデータが含まれているインライン句を持っていたが、不可能と思われる。私はあなたのソリューションが正しい方向だと思っています。 Containsデータを格納するための別のテーブルを作成し、再利用するためにそれらをまとめなければなりません。ありがとうございました。 –

関連する問題