2010-09-20 50 views
2

好吧,另一個LINQ問題。如何使用LINQ做「IN」條件。我有一個IEnumerable myObject列表,並希望在('Help','Admin','Docs')中執行類似myObject.Description的操作。我怎樣才能做到這一點?由於在使用LINQ的情況下

回答

5

在SQL相當於在LINQ Contains

string[] countries = new string[] { "UK", "USA", "Australia" }; 
var customers = 
    from c in context.Customers 
    where countries.Contains(c.Country) 
    select c; 
4

對集合使用Contains

string[] descriptions = { "Help", "Admin", "Docs" }; 

var query = from foo in list 
      where descriptions.Contains(foo.Description) 
      select ...; 

(對於較大的集合,一個HashSet<T>可能會更好)

+0

會HashSet 適用於除LINQ之外的任何提供程序嗎? – 2011-03-28 11:47:35

+0

@Ian:我不確定'HashSet '。許多提供程序允許在執行時使用列表或數組,在SQL中轉換爲「IN」子句。儘管如此,它仍然是提供商。 – 2011-03-28 18:35:39