2013-10-18 18 views
2

我有這樣的:LINQ的 - 在多個可能的過濾器等於值

vehicles = vehicles.Where(x => x.ModelUrl == filter.ModelUrl); 

這工作得很好,但是,而不是通過一個字符串(如filter.ModelUrl)我需要通過一個列表,以及查詢應返回所有結果,其中x.ModelUrl是列表中的任何項目。

我該怎麼做?

感謝

回答

2
vehicles = vehicles.Where(x => list.Contains(x.ModelUrl)); 
1

歡迎

vehicles = vehicles.Where(x => list.Contains(x.ModelUrl)); 
+0

不包含Containis .. –

+0

是的,當然,無論如何,VS intellisense幫助糾正它) – progpow

3
vehicles = vehicles.Where(x => OtherList.Contains(x.ModelUrl)); 

vehicles = vehicles.Where(x => OtherList.Any(ol => ol.ModelUrl == x.ModelUrl)); 
0

也許你應該只使用方法Contains

var vehicles = vehicles.Where(x => filter.Contains(x.ModelUrl)); 
0
vehicles = vehicles.Where(x => list.Contains(x.ModelUrl)); 
0

Where/Contains方法的一個替代方法是使用一個Join

vehicles = vehicles.Join(yourListOfUrls, 
         vec => vec.ModelUrl, 
         url => url, 
         (vev, url) => vec); 

vehicles = from vec in vehicles 
      join url in yourListOfUrls on vec.ModelUrl Equals url 
      select vec 

這是更大的列表更快。