2011-03-23 183 views
14

嗨列表中的任何比賽說我有一個字符串列表:如何確定一個字符串包含字符串

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

,我有其中有一個名稱字段一輛選項。

我想查找名稱與listOfStrings中某個項目匹配的車輛。

我試圖用linq做到這一點,但目前似乎無法完成它。

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

有人能幫助我嗎?

回答

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

這適用於非常短的字符串列表,但它的縮放比例很差。 – Guffa 2011-03-23 22:46:13

0

您可以執行Inner Join

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

將這項工作:

listOfStrings.Contains("Trucks"); 
10

使用HashSet一個List代替,這樣你可以找一個字符串,而不必遍歷列表。

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

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

var matchingVehicles = Vehicles.Where(v => setOfStrings.Contains(v.Name)); 
1
var m = Vehicles.Where(v => listOfStrings.Contains(v.Name)); 
0
Vehicles.Where(vehicle => listOfStrings.Contains(vehicle.Name)) 
0

要檢查字符串中包含這些字符之一(布爾輸出):

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

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

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