2010-09-20 43 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