2016-03-22 15 views
0

複数の値に基づいてレコードを選択する方法は、linqクエリを使用して1つの列に検索します。 のような製品IDは "product1"、 "product2"、 "product3"です。n個の値があります複数の値を1つの列で検索

答えて

1

値がリスト内にあるかどうかを確認するには、.Containsメソッドを使用できます。あなたは

また
Dim result = products.Where(Function(p) p.ID = "product1" Or p.ID = "product2" Or p.ID = "product3", ...) 

(これはVB.Net、C#に変更必要に応じている)のようなものを使用することができ

var values = new List<string>() { "Prod1", "Prod2", "Prod3" }; 
var query = context.Set<Product>().Where(x => values.Contains(x.Name)); 
+0

回答ありがとうございました – user6100258

0

、次のようなので、戻ってクライアントにそれをすべてを引くと.Containsを使用することができます。 (それはあなたのボートを浮遊している場合、ジェネリック)

Dim materializedProducts = products.ToList() 
Dim result = materializedProducts.Where(Function(p) {"product1", "product2", "{product3}", ...}.Contains(p.ID)) 

さらにまだ行く、あなたが拡張メソッドを作成することができますが、コレクションの順序を入れ替えるとすることを可能にすることISINまたは類似と呼ばれます検索値:

<Extension()> 
Public Function IsIn(Of T)(ByVal searchValue As T, 
          ByVal searchSet As IEnumerable(Of T)) 
    Return searchset.Contains(searchValue) 
End Sub 


Dim materializedProducts = products.ToList() 
Dim result = materializedProducts.Where(Function(p) p.ID.IsIn({"product1", "product2", "{product3}", ...})) 
+0

お返事ありがとうございます – user6100258

関連する問題