2012-01-27 17 views
17

के साथ एक विशिष्ट स्ट्रिंग मैं एक List<string> इस तरह कुछ आइटम है कि है:चेक अगर एक सूची के भीतर एक स्ट्रिंग Linq

{"Pre Mdd LH", "Post Mdd LH", "Pre Mdd LL", "Post Mdd LL"} 

अब मैं एक शर्त है कि जांच करने के लिए सूची में किसी आइटम शामिल करता है, तो चाहते हैं एक विशिष्ट स्ट्रिंग। कुछ की तरह:

IF list contains an item that contains this_string

यह आसान बनाने के लिए मैं कम से कम सूची अगर एक ही बार में जाँच करना चाहते हैं! उदाहरण के लिए एक आइटम है जिसमें Mdd LH है।

if(myList.Contains(str => str.Contains("Mdd LH)) 
{ 
    //Do stuff 
} 

धन्यवाद:

मैं की तरह कुछ मतलब है।

उत्तर

54

मुझे लगता है कि आप Any चाहते होना चाहिए:

if (myList.Any(str => str.Contains("Mdd LH"))) 

यह अच्छी तरह से LINQ standard query operators से परिचित बनने के लायक है; मैं आम तौर पर कार्यान्वयन-विशिष्ट तरीकों (जैसे List<T>.ConvertAll) के बजाय उन लोगों का उपयोग करता हूं जब तक कि मैं वास्तव में किसी विशिष्ट ऑपरेटर के प्रदर्शन से परेशान नहीं था।

+0

कैसे हम इसे केस संवेदी खोज कर सकते हैं? इसमें अधिभार विधि नहीं है। –

+0

@ अंकुर-एम: आप 'स्ट्रिंग कॉम्परिसन' में गुजरने के बजाय 'इंडेक्सऑफ' का उपयोग कर सकते हैं। यदि यह पर्याप्त जानकारी नहीं है, तो कृपया एक नया प्रश्न पूछें (बेशक मौजूदा लोगों की तलाश करने के बाद)। –

+0

मैं इंडेक्सऑफ का उपयोग करके ऐसा कर सकता हूं। हालांकि मुझे किसी के बजाय FindIndex का उपयोग करना पड़ा। मैं अभी भी देख रहा हूं कि किसी ने काम क्यों नहीं किया। और हाँ ऐसी ही पोस्ट हैं जो मुझे अपनी पहली खोज में नहीं मिल सका। मदद के लिए बहुत बहुत धन्यवाद! –

12

Thast आसान पर्याप्त

if(myList.Any(s => s.Contains(stringToCheck))){ 
    //do your stuff here 
} 
4

का प्रयास करें (कार्यान्वयन-विशिष्ट विधियों कभी कभी परिणाम आदि के आकार को जानने से अधिक कुशल हो सकता है) इस:

bool matchFound = myList.Any(s => s.Contains("Mdd LH")); 

Any() क्षण यह एक मैच पाता है stop searching जाएगा, ताकि काफी कुशल है इस काम के लिए।

6

LINQ किसी भी() काम करना होगा:

bool contains = myList.Any(s => s.Contains(pattern)); 

Any(), MSDN:

निर्धारित करता है एक दृश्य के किसी भी तत्व एक शर्त

1

yoou उपयोग किया गया है, तो आप को संतुष्ट करता है कि क्या झूठी सकारात्मक मिल सकती है। मान लें कि आपके पास एक स्ट्रिंग है जिसमें ऐसा टेक्स्ट है: "मेरा टेक्स्ट डेटा एमडीडी एलएच" कंटेनर विधि का उपयोग करके, यह विधि कॉल के लिए सच हो जाएगी। दृष्टिकोण उपयोग के बराबर होती है है ऑपरेटर:

bool exists = myStringList.Any(c=>c == "Mdd LH")

+0

पोस्टर पूरी तरह से पूरा करने की कोशिश कर रहा था, एसक्यूएल में 'जैसे' , इसलिए ये अनुमानित 'पॉजिटिव पॉजिटिव' होंगे, कोई भी आवश्यक नहीं है। –

संबंधित मुद्दे