मैं एक एपीआई का उपयोग कर रहा हूं जो Dictionary<string, string>
के रूप में एक कुंजी-मूल्य संग्रह देता है। मुझे इसे Dictionary<string, object>
में परिवर्तित करने की आवश्यकता है। मुझे एहसास है कि प्रत्येक कुंजी-मूल्य जोड़ी के माध्यम से "मैन्युअल" लूपिंग के बिना इस रूपांतरण/मानचित्रण को करने का कोई तरीका होना चाहिए, लेकिन गूगलिंग या सी # ऑब्जेक्ट संदर्भ तुरंत समाधान नहीं मिला।शब्दकोश <स्ट्रिंग, स्ट्रिंग> को एक शब्दकोश <string, object> में कनवर्ट करने का सबसे कम तरीका क्या है?
10
A
उत्तर
22
निम्नलिखित इस विस्तार विधि
var newMap = oldMap.ToDictionary(pair => pair.Key, pair=>(object)pair.Value);
0
आप उपयोग कर सकते हैं का प्रयास करें:
public static class ObjectExtensions
{
public static object GetPropertyValue(this object obj, string property)
{
return TypeDescriptor.GetProperties(obj)[property].GetValue(obj);
}
public static IDictionary<string, object> ToDictionary(this object obj)
{
IDictionary<string, object> result = new Dictionary<string, object>();
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(obj);
foreach (PropertyDescriptor property in properties)
{
result.Add(property.Name, property.GetValue(obj));
}
return result;
}
}
आप इसका इस्तेमाल की तरह:
new Dictionary<string, string>().ToDictionary();
3
कोई पाशन, नक्शे एक Dictionary{T, U}
तक लगातार समय में:
class DictionaryWrapper<T, U> : IDictionary<T, object>
{
readonly Dictionary<T, U> inner;
public DictionaryWrapper(Dictionary<T, U> wrapped)
{
this.inner = wrapped;
}
#region IDictionary<T,object> Members
public void Add(T key, object value) { inner.Add(key, (U)value); }
public bool ContainsKey(T key) { return inner.ContainsKey(key); }
public ICollection<T> Keys { get { return inner.Keys; } }
public bool Remove(T key) { return inner.Remove(key); }
public bool TryGetValue(T key, out object value)
{
U temp;
bool res = inner.TryGetValue(key, out temp);
value = temp;
return res;
}
public ICollection<object> Values { get { return inner.Values.Select(x => (object)x).ToArray(); } }
public object this[T key]
{
get { return inner[key]; }
set { inner[key] = (U)value; }
}
#endregion
#region ICollection<KeyValuePair<T,object>> Members
public void Add(KeyValuePair<T, object> item) { inner.Add(item.Key, (U)item.Value); }
public void Clear() { inner.Clear(); }
public bool Contains(KeyValuePair<T, object> item) { return inner.Contains(new KeyValuePair<T, U>(item.Key, (U)item.Value)); }
public void CopyTo(KeyValuePair<T, object>[] array, int arrayIndex) { throw new NotImplementedException(); }
public int Count { get { return inner.Count; } }
public bool IsReadOnly { get { return false; } }
public bool Remove(KeyValuePair<T, object> item) { return inner.Remove(item.Key); }
#endregion
#region IEnumerable<KeyValuePair<T,object>> Members
public IEnumerator<KeyValuePair<T, object>> GetEnumerator()
{
foreach (var item in inner)
{
yield return new KeyValuePair<T, object>(item.Key, item.Value);
}
}
#endregion
#region IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
foreach (var item in inner)
{
yield return new KeyValuePair<T, object>(item.Key, item.Value);
}
}
#endregion
}
में कुछ अधिक सामान्य पैरामीटर के साथ
, आप आगे इतना है कि यह एक Dictionary{C, D}
करने के लिए एक Dictionary{A, B}
नक्शे इस वर्ग के सामान्यीकरण कर सकते हैं।
संबंधित मुद्दे
- 1. सूची <String> को शब्दकोश <int,String>
- 2. एक शब्दकोश को पॉप्युलेट करने का आसान तरीका <स्ट्रिंग, सूची <string>>
- 3. शब्दकोश को बदलने के लिए <गतिशील, गतिशील> शब्दकोश शब्दकोश <string, string> Colllection.ToDictionary()
- 4. शब्दकोश <String,Int> शब्दकोश को <स्ट्रिंग, SomeEnum> LINQ का उपयोग करके कनवर्ट करें?
- 5. एक शब्दकोश <string, int>
- 6. शब्दकोश <string, /> का मतलब क्या है?
- 7. शब्दकोश को क्रमबद्ध करना <string, object> जब शब्दकोश को असंवेदनशील स्ट्रिंग तुलनाकर्ता
- 8. जो तेज़/अधिक कुशल है: शब्दकोश <string, object> या शब्दकोश <enum,object>?
- 9. सी # कन्वर्ट सूची <string> शब्दकोश में <स्ट्रिंग, स्ट्रिंग>
- 10. लिंक एक आईनेमरेबल <शब्दकोश <स्ट्रिंग, स्ट्रिंग >>
- 11. मैं एक शब्दकोश <स्ट्रिंग, शब्दकोश <स्ट्रिंग, स्ट्रिंग >> क्यों नहीं बना सकता?
- 12. कन्वर्ट शब्दकोश <स्ट्रिंग, स्ट्रिंग>
- 13. शब्दकोश से पहली कुंजी प्राप्त करें <string, string>
- 14. LINQ क्वेरी एक शब्दकोश वापस करने के लिए <string, string>
- 15. हैशसेट <String> से स्ट्रिंग में कनवर्ट करना []
- 16. शब्दकोश को स्ट्रिंग करने के लिए सबसे अच्छा तरीका <स्ट्रिंग, स्ट्रिंग> एकल समेकित स्ट्रिंग प्रतिनिधित्व में?
- 17. आईसीओलेक्शन <string> स्ट्रिंग []
- 18. पढ़ें एसक्यूएल टेबल शब्दकोश में <स्ट्रिंग, सूची <string[]>>
- 19. एक शब्दकोश सहेजना <स्ट्रिंग, Int32> सी # में - सीरियलाइजेशन?
- 20. रिटर्न चेर्स द्वारा सूची <string> में अलग स्ट्रिंग को परिवर्तित करने का सबसे अच्छा तरीका क्या है?
- 21. जावा शब्दकोश <स्ट्रिंग, सूची <Object>>
- 22. एक शब्दकोश भरना <> एक आईनेमरेबल <> स्रोत
- 23. http हेडर (स्ट्रिंग) को एक पायथन शब्दकोश में कनवर्ट करें
- 24. क्या एक शब्दकोश को स्ट्रिंग में कनवर्ट करने के लिए वैसे भी है?
- 25. स्ट्रिंग को बाइनरी में कनवर्ट करने का सबसे तेज़ तरीका?
- 26. एक शब्दकोश के स्ट्रिंग प्रस्तुति को वास्तविक शब्दकोश में बदलना
- 27. कक्षा में शब्दकोश को कैसे परिवर्तित करें <string, string>?
- 28. शब्दकोश कन्वर्ट <स्ट्रिंग, ऑब्जेक्ट> बेनामी ऑब्जेक्ट में?
- 29. किसी शब्दकोश में सभी मानों को अपडेट करने के लिए <string, bool>
- 30. शब्दकोश को सूची में कनवर्ट करने के लिए C#
+1, हालांकि यह ध्यान देने योग्य है कि ओपी जिस तरह से बचाना चाहता है उससे कहीं भी "दुबला" नहीं है - यह सिर्फ एक सुंदर चमकदार वाक्यविन्यास के पीछे छिपा हुआ है। –
@Rex, सच है, लेकिन यह ओपी द्वारा पूछे गए मैनुअल लूप से बचाता है। – JaredPar
"दुबला" अलग-अलग चीजों के लिए बढ़ाया जा सकता है। मेरे मामले में मैं बस दिन बचाने के लिए एक त्वरित समाधान की तलाश में था। इस उत्तर के लिए धन्यवाद। –