2017-10-26 8 views
-1

現在、C#のデータベースから複数のユニークIDを検索しようとしています。私は、次を使用して1を引くことができています:C#で複数のSQLユニークIDを検索する

var atmtrans = 
        (from clf in db.CODE_LINE_FIELDS 
        where clf.FIELD2_DATA == "26" 

私はC#のでまだかなり新しいですし、私は次のよう

where clf.FIELD2_DATA == "26" + "20" + "27" + "64000"

を行うことができると仮定しかし、その後、私はそれが基本的だろう実現します26202764000

は、以下のように簡単になり、SQL Management Studioでデータベースから直接検索:

select * FROM [Database].[dbo].[Table] where Column in ('20', 
    '26', 
    '27', 
    '64000') 

固有のIDで変数を3回繰り返しても同じことが簡単にできますか、別の方法がありますか?

+0

を探したいことを指定されました以下の方法を研究して、結果を見たらそれに対応します。 – dwhilton

答えて

0

検索するIDを取得する関数をC#で作成することを検討できます。

searchforID(int ID){ 
var data = from clf in db.CODE_LINE_FIELDSwhere clf.FIELD2_DATA = ID; 
return data 
} 

これを複数回呼び出すことができます。

+0

これは悪いようです。 IDが200個ある場合、SQLエンジンに1つのトランザクションを処理させる代わりに、200個の異なるトランザクションを作成して、それぞれを個別に返す必要があります。 – Kevin

1

あなたが探していることは、単に複数のOR条件であるようですね:

where clf.FIELD2_DATA == "26" || clf.FIELD2_DATA== "20" || clf.FIELD2_DATA== "27" || clf.FIELD2_DATA== "64000" 

あなたがすっきり方法を望んでいた場合、あなたが探しているIDのList<string>を作成することができます.Containsを使用してそのリスト内の項目のみを選択します。

List<string> ids = new List<string> { "26", "20", "27", "64000" }; 

var atmtrans = (from clf in db.CODE_LINE_FIELDS 
       where ids.Contains(clf.FIELD2_DATA) 
       ... 

これは、SQL WHERE ... IN (...)

+0

+1、第2の、よりきれいなアプローチ。主にOPのために追加したい:あなたのユニークなフィールドがインデックスを持っていることを確認してください - うまくいけば、それはテーブルのプライマリ/クラスタ化インデックスです。 – Kevin

0

と非常によく似ていますが、この

を行うことができ
(from clf in db.CODE_LINE_FIELDS 
       where clf.FIELD2_DATA == "26" || 
         clf.FIELD2_DATA == "20" || 
         clf.FIELD2_DATA == "27" || 
         clf.FIELD2_DATA == "64000" 

これは、ID 26または20または27または64000

+0

は '|| '' 26 'が見えない場合は、次の正しいものに行くように 'a or operator?もし私がそれをすべて検索したければ、それを '|| | '? – dwhilton

+0

@dwhilton 'or'は各レコード*で制定されます。したがって、レコードは' FIELD2_DATA'プロパティがIDの* any *と一致する場合にインクルードされます。 – Santi

関連する問題