सी # में संग्रह सूची में शब्दकोश कन्वर्ट


93

मुझे एक समस्या है जब एक शब्दकोश को सूची में बदलने की कोशिश की जा रही है।

उदाहरण यदि मेरे पास कुंजी के रूप में टेम्पलेट स्ट्रिंग और मूल्य के रूप में स्ट्रिंग के साथ एक शब्दकोश है। फिर मैं एक स्ट्रिंग के रूप में सूची संग्रह में शब्दकोश कुंजी को परिवर्तित करना चाहता हूं।

Dictionary<string, string> dicNumber = new Dictionary<string, string>();
List<string> listNumber = new List<string>();

dicNumber.Add("1", "First");
dicNumber.Add("2", "Second");
dicNumber.Add("3", "Third");

// So the code may something look like this
//listNumber = dicNumber.Select(??????);

5
क्या आप शब्दकोश से चाबियों की सूची मांग रहे हैं? यदि ऐसा है तो शब्दकोश पर एक कुंजी गुण है जो आपको देगा।
ब्रायन रासमुसेन

जवाबों:


175

कुंजी को अपनी सूची में बदलने के लिए:

listNumber = dicNumber.Select(kvp => kvp.Key).ToList();

या आप इसे छोटा कर सकते हैं और चयन का उपयोग करके परेशान भी नहीं कर सकते हैं:

listNumber = dicNumber.Keys.ToList();

@ ब्रायन - मैं अपने एडिट में वहां पहुंच रहा था। मैं पहले चयन विधि दिखाना चाहता था क्योंकि ओपी ने इस बारे में पूछा था और फिर विकल्प दिखाया। :-)
जस्टिन निस्नेर

तो मुझे लगा, तो मैंने अपनी टिप्पणी हटा दी।
ब्रायन रासमुसेन

1
यह वास्तव में मददगार था। मुझे आवेदन करने की आवश्यकता है। चाबियाँ वापस करने से पहले (जहां ...), लेकिन वह विधि एक शब्दकोश नहीं लौटाती है, इसलिए मैं कुंजी संपत्ति का उपयोग नहीं कर सकता। यह काम करने के बाद जहां महान काम किया
मार्टीन कोल

22

वैकल्पिक रूप से:

var keys = new List<string>(dicNumber.Keys);

4
.NET कॉम्पैक्ट फ्रेमवर्क 2.0 (इसलिए कोई लिनक) के साथ काम करना मेरे लिए सबसे अच्छा विकल्प था।
माइकल मर्फी

यदि आप LINQ का उपयोग नहीं कर सकते हैं तो यह विकल्प सबसे अच्छा लगता है।
user2000950

17

यदि आप Linq का उपयोग करना चाहते हैं तो आप निम्नलिखित स्निपेट का उपयोग कर सकते हैं:

var listNumber = dicNumber.Keys.ToList();

9

यदि आप कुंजी बदलना चाहते हैं:

List<string> listNumber = dicNumber.Keys.ToList();

और यदि आप चाहते हैं कि मान परिवर्तित करें:

List<string> listNumber = dicNumber.Values.ToList();

हो जाएगा ताकि काम है, लेकिन आदेश जैसा कि आप उम्मीद में नहीं हो सकता है, यहां तक कि dict से पहले कुंजी द्वारा आदेश दिया गया था, dict.Values नहीं है ...
BooNonMooN


3

यदि आप डिक्शनरी संग्रह को एक विधि तर्क में पास करना चाहते हैं।

List<string> lstKeys = Dict.Keys;
Methodname(lstKeys);
-------------------
void MethodName(List<String> lstkeys)
{
    `enter code here`
    //Do ur task
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.