如何确定字符串是否包含字符串列表的任何匹配项

嗨说我有一个字符串列表:

var listOfStrings = new List{"Cars", "Trucks", "Boats"}; 

我有一个车辆选项,其中有一个名称字段。

我想找到名称与listOfStrings中的一个项目匹配的车辆。

我正试图用linq做这个,但目前似乎无法完成它。

 var matchingVehicles = Vehicles.Where(v => v.Name == one of the listOfStringItem) 

任何人都可以帮我吗?

 Vehicles.Where(v => listOfStrings.Contains(v.Name)) 

使用HashSet而不是List ,这样您就可以查找字符串而无需遍历列表。

 var setOfStrings = new HashSet {"Cars", "Trucks", "Boats"}; 

现在,您可以使用Contains方法有效地查找匹配项:

 var matchingVehicles = Vehicles.Where(v => setOfStrings.Contains(v.Name)); 

这会工作:

 listOfStrings.Contains("Trucks"); 
 var m = Vehicles.Where(v => listOfStrings.Contains(v.Name)); 

您可以执行内部联接 :

 var matchingVehicles = from vehicle in vehicles join item in listOfStrings on vehicle.Name equals item select vehicle; 
 Vehicles.Where(vehicle => listOfStrings.Contains(vehicle.Name)) 

要检查字符串是否包含其中一个字符(布尔输出):

 var str= "string to test"; var chr= new HashSet{',', '&', '.', '`', '*', '$', '@', '?', '!', '-', '_'}; bool test = str.Any(c => chr.Contains(c));