2011-03-23 35 views
14

हाय की एक सूची में से किसी से मेल खाता होता है कहते हैं कि मैं तार की एक सूची है:कैसे निर्धारित करें कि एक स्ट्रिंग तार

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

और मैं एक वाहनों विकल्प है जो एक नाम फ़ील्ड है की है।

मैं उन वाहनों को ढूंढना चाहता हूं जहां नाम सूची में आइटमों में से किसी एक से मेल खाता है।

मैं इसे linq के साथ करने की कोशिश कर रहा हूं लेकिन इस समय इसे समाप्त नहीं कर सकता।

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

क्या कोई इस से मेरी सहायता कर सकता है?

उत्तर

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

यह तारों की एक बहुत ही छोटी सूची के लिए काम करता है, लेकिन यह बुरी तरह से स्केल करता है। – Guffa

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

उपयोग एक List के बजाय एक HashSet, इस तरह आप बिना एक स्ट्रिंग के लिए देख सकते सूची के माध्यम से लूप। अगर एक स्ट्रिंग इन पात्रों में से एक (बूलियन उत्पादन) शामिल हैं

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

जांच करने के लिए:

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

अब आप कुशलता से एक मैच देखने के लिए Contains विधि का उपयोग कर सकते हैं

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

वापसी बूल मान और यह स्ट्रिंग या चर लेता है।

string country = "southindia"; 
string cou = "india"; 
if (country.Contains(cou)) 
{ 
Console.WriteLine(country); 
} 
else 
{ 
Console.WriteLine(cou); 
} 
संबंधित मुद्दे