2013-01-03 29 views
7

मैं एकसी # में सूची <टपल <स्ट्रिंग, स्ट्रिंग >> में एक स्ट्रिंग खोज कैसे

 List<Tuple<string,string>> tr = new List<Tuple<string,string>>(); 
     tr.Add(new Tuple<string, string>("Test","Add"); 
     tr.Add(new Tuple<string, string>("Welcome","Update"); 

     foreach (var lst in tr) 
     { 
      if(lst.Contains("Test")) 
       MessageBox.Show("Value Avail"); 

      } 

मैं जबकि ऐसा करने में विफल रहा है हो रहा है, ....

+1

"असफल" का क्या अर्थ है? –

+0

समस्या क्या है? –

+1

यहां पोस्ट किए गए आपके कोड में बहुत अधिक संकलन त्रुटियां हैं। अनुपलब्ध ')' और lst स्पष्ट रूप से इसमें शामिल करने के लिए परिभाषा नहीं है। आपको कोड पोस्ट करना चाहिए जो संकलित कर सकता है और फिर आपकी समस्या दिखाता है। Konstantin का जवाब नीचे आपकी समस्या हल करता है। – ryadavilli

उत्तर

3

शायद यह काम करना चाहिए:

foreach (var lst in tr) 
{   
    if (lst.Item1.Equals("Test"))   
     MessageBox.Show("Value Avail"); 
} 

या इस

if (lst.Item1.Equals("Test") || lst.Item2.Equals("Test")) 

Tuple Class पढ़ें; आपको Item1 और/या Item2 गुणों के माध्यम से tuple के मानों तक पहुंचने की आवश्यकता होगी।


और ट्यूपल का उपयोग क्यों करें? हो सकता है कि यह आसान है:

Dictionary<string, string> dict = new Dictionary<string, string> 
{ 
    {"Test", "Add"}, 
    {"Welcome", "Update"} 
}; 

if (dict.ContainsKey("Test")) 
{ 
    MessageBox.Show("Value Avail:\t"+dict["Test"]); 
} 
1

यह होना चाहिए foreach (var lst in tr) lstEvntType नहीं और आप टपल के आइटम 1 क्षेत्र के लिए बजाय का परीक्षण करना चाहिए।

0

आप lstEvntType पर क्यों चल रहे हैं और tr नहीं? आप इस प्रयास करना चाहिए:

List<Tuple<string,string>> tr = new List<Tuple<string,string>>(); 
tr.Add(new Tuple<string, string>("Test","Add")); 
tr.Add(new Tuple<string, string>("Welcome","Update")); 
List<Tuple<string,string>> lstEvntType = new List<Tuple<string,string>>(); 

    foreach (var lst in tr) 
    { 
     if(lst.Item1.Equals("Test")) 
      MessageBox.Show("Value Avail"); 
    } 
0

बदलें

if(lst.Contains("Test")) 

करने के लिए

if(lst.Item1.Contains("Test") || lst.Item2.Contains("Test")) 

टपल अधिक आइटम नहीं है, तो आप सभी मदों के लिए शर्त जोड़ने की जरूरत है।

यदि आप सभी टुपल्स के लिए इसे आम बनाना चाहते हैं, तो आपको प्रतिबिंब (और the quirky way) का उपयोग करने की आवश्यकता है।

9

आप LINQ उपयोग करने के लिए करना चाहते हैं:

if(tr.Any(t => t.Item1 == "Test" || t.Item2 == "Test")) 
    MessageBox.Show("Value Avail"); 

यह भी केवल संदेश बॉक्स (यदि क्या वांछित है यह है कि) एक बार अगर पाठ कई बार पाया जाता है दिखाने का लाभ भी होगा।

+0

यह एक अच्छा उदाहरण है, मेरे लिए भी काम किया :-) – Karan

0

शायद यह किसी और की मदद कर सकता है। यहाँ विधि मैं साथ चला गया है:

List<Tuple<string,string>> tr = new List<Tuple<string,string>>(); 
tr.Add(new Tuple<string, string>("Test","Add"); 
tr.Add(new Tuple<string, string>("Welcome","Update"); 

if(lst.Any(c => c.Item1.Contains("Test"))) 
    MessageBox.Show("Value Avail"); 

(क्रेडिट here चला जाता है)

0
List<Tuple<string,string>> tr = new List<Tuple<string,string>>(); 
tr.Add(new Tuple<string, string>("Test","Add"); 
tr.Add(new Tuple<string, string>("Welcome","Update"); 
var index = tr.FindIndex(s=>s.Item1 == "Test" || s.Item2 == "Test"); 
if(index != -1) 
MessageBox.Show("Value Avail"); 

FindIndex उपयोग करके, आप एक ही समय में उपलब्धता और तत्व के सूचकांक देख सकते हैं।