Linq - 过滤多个可能的等值

时间:2013-10-18 10:17:00

标签: linq

我有这个:

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

这很好,但是我没有传递一个字符串(作为filter.ModelUrl),而是传递一个List,查询应该返回所有结果,其中x.ModelUrl是列表中的任何项目。

我该怎么做?

由于

6 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

欢迎

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

答案 3 :(得分: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

对于更大的列表更快。

答案 4 :(得分:-1)

也许你应该只使用方法Contains

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

答案 5 :(得分:-1)

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