में कनवर्ट करें मेरे पास एक तरीका है जो पैरामीटर के रूप में IDictionary प्राप्त करता है। अब मैं एक ऐसी विधि प्रदान करना चाहता हूं जो इस शब्दकोश से मूल्य पुनर्प्राप्त करे, लेकिन यह केस-इनवेरिएंट होना चाहिए।IDictionary <स्ट्रिंग, स्ट्रिंग> कुंजी को लोअरकेस (सी #)
तो यह सही करने के लिए अपने समाधान अब एक स्थिर समारोह है कि कुंजी के माध्यम से लूप और उन्हें toLower (धर्मान्तरित) इस तरह के लिए किया गया था:
private static IDictionary<ILanguage, IDictionary<string, string>> ConvertKeysToLowerCase(
IDictionary<ILanguage, IDictionary<string, string>> dictionaries)
{
IDictionary<ILanguage, IDictionary<string, string>> resultingConvertedDictionaries
= new Dictionary<ILanguage, IDictionary<string, string>>();
foreach(ILanguage keyLanguage in dictionaries.Keys)
{
IDictionary<string, string> convertedDictionatry = new Dictionary<string, string>();
foreach(string key in dictionaries[keyLanguage].Keys)
{
convertedDictionatry.Add(key.ToLower(), dictionaries[keyLanguage][key]);
}
resultingConvertedDictionaries.Add(keyLanguage, convertedDictionatry);
}
return resultingConvertedDictionaries;
}
अब, यह ठीक है, लेकिन अभी भी यह एक बहुत बड़ा है कोड का हिस्सा जो "स्वच्छ और कुशल" के मेरे विचार के विपरीत है। क्या आप इसके लिए कोई विकल्प जानते हैं ताकि शब्दकोश का कॉन्टैन्सकी() विधि आवरण के बीच अंतर न करे?
धन्यवाद! यह काम करता है, लेकिन मुझे अभी भी आईलांगेज शब्दकोश देखने की ज़रूरत है और शब्दकोश मैन्युअल रूप से जोड़ें। कोई रास्ता नहीं मैं इससे छुटकारा पा सकता हूं? –
Tigraine
ऐसा नहीं है कि मैं तुरंत सोच सकता हूं। हालांकि यह केवल एक लूप है ... शायद ही कभी पढ़ा जा सकता है। यदि आप .NET 3.5 का उपयोग कर रहे हैं तो आप शायद इसे * थोड़ा * बिट स्ट्रीम कर सकते हैं, लेकिन मैं इसे पसीना नहीं पड़ेगा। क्या आप पहली जगह में केस-असंवेदनशील तुलनाकर्ता निर्दिष्ट करने के लिए मूल शब्दकोश के निर्माता को बदल सकते हैं? –
यह सबसे अच्छा समाधान प्रतीत होता है क्योंकि टिग्रेन हासिल करना चाहता है केस की अनदेखी तुलना और चाबियों को लोअरकेस में कनवर्ट करना यह हासिल करने के लिए केवल एक (अनावश्यक) तरीका है। – VVS