2013-01-03 17 views
9

में सभी चाबियाँ जाओ मैं इस है:शब्दकोश युक्त मान x

Dictionary<integer, string> dict = new Dictionary<integer, string>(); 

मैं शब्दकोश कि मूल्य abc शामिल में सभी आइटम का चयन करना चाहते।

क्या कोई अंतर्निहित कार्य है जो मुझे आसानी से ऐसा करने देता है?

उत्तर

28

खैर यह यथोचित LINQ के साथ सरल है:

var matches = dict.Where(pair => pair.Value == "abc") 
        .Select(pair => pair.Key); 

ध्यान दें कि यह भी थोड़ा कुशल नहीं होगा - यह एक O(N) आपरेशन के रूप में यह हर प्रविष्टि की जांच की जरूरत है।

आप इस अक्सर करने की जरूरत है, तो आप एक और डेटा संरचना का उपयोग पर विचार कर सकते - Dictionary<,> विशेष रूप से तेजी से लुकअप कुंजी द्वारा लिए बनाया गया है।

+0

आप कर सकते थे का उपयोग कर पुनरावृति करने के लिए आप कुंजी है कि होता है "abc" आप भी कर सकते थे एक मूल्य है कि प्राप्त करने के लिए चाहते हैं। कहां (pair => pair.Value.Contains ("abc")) । चयन करें (pair => pair.Key); – jmrnet

+0

@ उपयोगकर्ता: 'शब्दकोश <,>' 'शब्दकोश ' के लिए सिर्फ लघुरूप है। आपका शब्दकोश कितना बड़ा है? आपको खोजने के लिए कितने मूल्यों की आवश्यकता है? प्रति सेकंड एक बार अक्सर नहीं होता है, यदि यह एक उचित छोटा शब्दकोश है और आप केवल एक ही मूल्य की तलाश कर रहे हैं ... –

+0

शब्दकोश की क्षमता 10 कुंजी और 4 मान ("बाएं", "दाएं", "सामने" ,"वापस")। और कभी-कभी फ़ंक्शन प्रति सेकेंड लगभग 10 गुना चलता है। – Elmo

0

अंतर्निहित कार्य? वर मैचों = dict: नहीं खेद ... लेकिन एक और (इतना सुंदर नहीं) जिस तरह से foreach(KeyValuePair<integer, string> ...

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