如何确定一个字符串包含字符串

问题描述:

嗨列表中的任何比赛说我有一个字符串列表:如何确定一个字符串包含字符串

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

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

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

我试图用linq做到这一点,但目前似乎无法完成它。

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

有人能帮助我吗?

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

这适用于非常短的字符串列表,但它的缩放比例很差。 – Guffa 2011-03-23 22:46:13

您可以执行Inner Join

var matchingVehicles = from vehicle in vehicles 
         join item in listOfStrings on vehicle.Name equals item 
         select vehicle; 

将这项工作:

listOfStrings.Contains("Trucks"); 

使用HashSet一个List代替,这样你可以找一个字符串,而不必遍历列表。

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

现在你可以使用Contains方法能够有效地查找匹配:

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

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

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

要检查字符串中包含这些字符之一(布尔输出):

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

return bool值,它需要字符串或变量。

string country = "southindia"; 
string cou = "india"; 
if (country.Contains(cou)) 
{ 
Console.WriteLine(country); 
} 
else 
{ 
Console.WriteLine(cou); 
}