2013-04-11 3 views
6
ILookup<string, string> someList; 
      Cricket Sachin 
        Dravid 
        Dhoni 
      Football Beckham 
        Ronaldo 
        Maradona 
bool status = someList.Where(x => x.Key == "Football").Where(y => y.Value == "Ronaldo") 

सच लौट जानासबसे अच्छा तरीका है LINQ का उपयोग कर यदि मान ILookup <स्ट्रिंग, स्ट्रिंग> में एक महत्वपूर्ण के लिए मौजूद है की जाँच करने के

bool status = someList.Where(x => x.Key == "Football").Where(y => y.Value == "Venus williams") 

झूठी

ILookup नहीं करता है 'वापस आ जाएगी टी की कीमत संपत्ति नहीं है, लूपिंग के बजाए, क्या परिणाम कुछ लाइनों में प्राप्त करने का एक शानदार तरीका है। उपर्युक्त कोड सही नहीं है, अगर ऐसा संभव हो तो कुछ ऐसा ही उम्मीद कर रहा है। मैं Linq करने के लिए नया हूँ इसलिए बेहतर तरीके

उत्तर

2
bool status = someList.Where(x => x.Key == "Football").Any(y => y.Value == "Venus williams") 
+0

शानदार! जैसे – user2271512

7

वस्तु ILookup<TKey, TElement>.Item संपत्ति के से लौटे (जो जब आप someList[...] करना कहा जाता है क्या है) सीखने एक IEnumerable<TElement> है। तो आप प्रत्येक आइटम की तुलना सीधे अपने परीक्षण मूल्य से कर सकते हैं। इस तरह:

var status = someList["Football"].Any(y => y == "Venus Williams"); 
+0

यदि लुकअप के भीतर कोई "फुटबॉल" कुंजी नहीं है तो यह असफल हो जाएगी। आपको 'someList.Contains ("फुटबॉल")' पहले कॉल करना चाहिए। – MarcinJuraszek

+3

@MarcinJuraszek क्या आप इसके बारे में निश्चित हैं? मैंने अभी 'ToLookup' के साथ बनाए गए लुकअप का उपयोग करके इसे आजमाया और यह एक खाली सेट लौटा दिया। ['IDictionary'] पर ध्यान दें (http://msdn.microsoft.com/en-us/library/zyxt2e2h.aspx) दस्तावेज़ एक अपवाद निर्दिष्ट करते हैं, लेकिन [' ILookup'] (http://msdn.microsoft.com /en-us/library/bb549314.aspx) दस्तावेज़ नहीं करते हैं। –

+0

हम्म, क्या मुझे यकीन है? वास्तव में नहीं, लेकिन यह एक तर्क व्यवहार होगा। यह इंगित करने के लिए बहुत बहुत धन्यवाद कि मैं गलत था! – MarcinJuraszek

0

मैं .Any(x => x.Value == "value") का उपयोग करूंगा।

गलत हो सकता है, लेकिन मुझे लगता है कि आप हालांकि, 2 चरणों में यह करने के लिए चाहते हैं, यह जांच करना कि पहले (key) खोज सुनिश्चित करने के लिए आप एक null पर एक .Any() नहीं कर रहे हैं मूल्य खोज करने के लिए जारी रखने से पहले सफल होता है आपत्ति

1

कैसे के बारे में:

var status = someList.Any(grp => grp.Key.Equals("Football") && grp.Contains("Venus Williams")); 

स्पष्टीकरण: ILookup IGrouping की एक IEnumerable है - एक समूहीकरण एक कुंजी संपत्ति है, और तार का एक सूची

को महत्व देता है
संबंधित मुद्दे

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