How to convert Dictionary to Dictionary in c#

前端 未结 6 622
日久生厌
日久生厌 2020-12-08 09:23

I have below code in C#

Dictionary dObject = new Dictionary();

I want to convert dObject<

相关标签:
6条回答
  • 2020-12-08 09:28

    How about:

    Dictionary<string, string> newDictionary = dObject.ToDictionary(k => k.Key, k => (string) k.Value);
    
    0 讨论(0)
  • 2020-12-08 09:36

    .NET 3.5:

    Dictionary<string, string> result = dObject.ToDictionary(kvp => kvp.Key, kvp => Convert.ToString(kvp.Value));
    

    .NET 2.0:

    Dictionary<string, string> result = new Dictionary<string, string>();
    foreach (KeyValuePair<string, object> kvp in dObject) result.Add(kvp.Key, Convert.ToString(kvp.Value));
    
    0 讨论(0)
  • 2020-12-08 09:37

    Use the ToDictionary method:

    Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value.ToString());
    

    Here you reuse the key from the original dictionary and you convert the values to strings using the ToString method.

    If your dictionary can contain null values you should add a null check before performing the ToString:

    Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value == null ? "" : k.Value.ToString());
    

    The reason this works is that the Dictionary<string, object> is actually an IEnumerable<KeyValuePair<string,object>>. The above code example iterates through the enumerable and builds a new dictionary using the ToDictionary method.

    Edit:

    In .Net 2.0 you cannot use the ToDictionary method, but you can achieve the same using a good old-fashioned foreach:

    Dictionary<string, string> sd = new Dictionary<string, string>(); 
    foreach (KeyValuePair<string, object> keyValuePair in dict)
    {
      sd.Add(keyValuePair.Key, keyValuePair.Value.ToString());
    }
    

    Edit2:

    If you are on .Net 2.0 and you can have null values in the dictionary the following should be safe:

    Dictionary<string, string> sd = new Dictionary<string, string>(); 
    foreach (KeyValuePair<string, object> keyValuePair in dict)
    {
      sd.Add(keyValuePair.Key, keyValuePair.Value == null ? "" : keyValuePair.Value.ToString());
    }
    
    0 讨论(0)
  • 2020-12-08 09:41

    In .Net 2.0 probably your best friend is foreach loop:

    Dictionary<string, object> dObject = new Dictionary<string, object>();
    Dictionary<string, string> newObjects = new Dictionary<string, string>();
    
    foreach (KeyValuePair<string, object> keyValuePair in dObject)
    {
        newObjects.Add(keyValuePair.Key, keyValuePair.Value.ToString());
    }
    
    0 讨论(0)
  • 2020-12-08 09:50

    Since you are using .net 2.0:

    Dictionary<string, string> dString = new Dictionary<string, string>();
    
    foreach (KeyValuePair<string, object> item in dObject)
    {
        dString.Add(item.Key, item.Value.ToString());
        //here item.Value.ToString() is an example
        //you should convert your item to string according to the requirement
    }
    
    0 讨论(0)
  • 2020-12-08 09:52
    Dictionary<string, string> dString = dObject.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.ToString());
    

    It's just idea. You can insert any verifications.

    0 讨论(0)
提交回复
热议问题