2011-01-25 14 views
2

私は顧客ID、custList(stringの)のリストを持っています。LINQ to Dataset - sql(where ... in ...)と同じです

カスタマーテーブル内のすべての顧客を取得するために、LINQクエリをデータセットに使用したいとします。ここで、customerIDは(文字列の)custListの「IN」です。

これはLINQでも可能ですか?私はオンラインで検索して答えを見つけられませんでした。私は..

おかげLINQで

+0

すべてのあなたの速度応答をありがとう!私が使用して終了:レコードから薄暗いQuery1を=をds.Tablesで( "顧客")lst.Contains(列のRECORD.FIELD()( "CUSTID")) 選択したレコードあなたがしている – novice

+0

AsEnumerable()_ をようこそ。有用な回答をupvoteし、可能ならばあなたの問題を解決した答えを受け入れたものにしてください。 –

答えて

1
var custList = new HashSet<string>() { "a", "b", "c"...}; 

from record in table.ToEnumerable() 
where custList.Contains(record.Field<string>("customerID")) 
+0

これは完璧に働いてくれてありがとう!私はLINQを愛しています! – novice

2

LINQに新たなんだあなたは、クエリのこれらの種類を実行するためにContains()メソッドを使用します。

私は、データセットにLINQを知らないが、LINQであなたが次の操作を行うことができますSQLに:

select * from Product p 
where p.Id in (1, 2, 3) 

(どのようにそれを注意:

var statuses = new int[] {1, 2, 3}; 

var query = from p in dataContext.Products 
      where statuses.Contains(p.Id) 
      select p; 

これは次のようにSQLを生成する必要があります生成されたSQLにLINQコードに後ろから前に感じている - それはあなたがSQLを知っていればよく、それは非常に直感的ではないが、それは、既存の.NET言語機能の非常にエレガント使用する理由です)

これは通常、stringとL2Sがフレームワーク内にあるために知っている他の基本的なタイプのコレクションでも機能します。

0
var custList = new HashSet<int> { 10, 15, 17 }; 
CustomerSet.Where(c => custList.Contains(c.CustomerID));