我有這樣的:LINQ的 - 在多個可能的過濾器等於值
vehicles = vehicles.Where(x => x.ModelUrl == filter.ModelUrl);
這工作得很好,但是,而不是通過一個字符串(如filter.ModelUrl)我需要通過一個列表,以及查詢應返回所有結果,其中x.ModelUrl是列表中的任何項目。
我該怎麼做?
感謝
我有這樣的:LINQ的 - 在多個可能的過濾器等於值
vehicles = vehicles.Where(x => x.ModelUrl == filter.ModelUrl);
這工作得很好,但是,而不是通過一個字符串(如filter.ModelUrl)我需要通過一個列表,以及查詢應返回所有結果,其中x.ModelUrl是列表中的任何項目。
我該怎麼做?
感謝
vehicles = vehicles.Where(x => list.Contains(x.ModelUrl));
歡迎
vehicles = vehicles.Where(x => list.Contains(x.ModelUrl));
vehicles = vehicles.Where(x => OtherList.Contains(x.ModelUrl));
或
vehicles = vehicles.Where(x => OtherList.Any(ol => ol.ModelUrl == x.ModelUrl));
也許你應該只使用方法Contains:
var vehicles = vehicles.Where(x => filter.Contains(x.ModelUrl));
vehicles = vehicles.Where(x => list.Contains(x.ModelUrl));
到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
這是更大的列表更快。
不包含Containis .. –
是的,當然,無論如何,VS intellisense幫助糾正它) – progpow