Convert Dictionary to Dictionary using LINQ?

前端 未结 3 1399
南方客
南方客 2021-02-07 07:56

I\'m trying to find a LINQ oneliner that takes a Dictionary and returns a Dictionary....it might not be possible, but would be nice.

相关标签:
3条回答
  • 2021-02-07 08:35
    var result = dict.ToDictionary(kvp => kvp.Key,
                   kvp => (SomeEnum)Enum.ToObject(typeof(SomeEnum), kvp.Value));
    
    0 讨论(0)
  • 2021-02-07 08:50
    var collectionNames = new Dictionary<Int32,String>();
    Array.ForEach(Enum.GetNames(typeof(YOUR_TYPE)), name => 
    { 
      Int32 val = (Int32)Enum.Parse(typeof(YOUR_TYPE), name, true); 
      collectionNames[val] = name; 
    }); 
    
    0 讨论(0)
  • 2021-02-07 08:52

    It works straight forward with a simple cast.

    Dictionary<String, Int32> input = new Dictionary<String, Int32>();
    
    // Transform input Dictionary to output Dictionary
    
    Dictionary<String, SomeEnum> output =
       input.ToDictionary(item => item.Key, item => (SomeEnum)item.Value);
    

    I used this test and it does not fail.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Diagnostics;
    
    namespace DictionaryEnumConverter
    {
        enum SomeEnum { x, y, z = 4 };
    
        class Program
        {
            static void Main(string[] args)
            {           
                Dictionary<String, Int32> input =
                   new Dictionary<String, Int32>();
    
                input.Add("a", 0);
                input.Add("b", 1);
                input.Add("c", 4);
    
                Dictionary<String, SomeEnum> output = input.ToDictionary(
                   pair => pair.Key, pair => (SomeEnum)pair.Value);
    
                Debug.Assert(output["a"] == SomeEnum.x);
                Debug.Assert(output["b"] == SomeEnum.y);
                Debug.Assert(output["c"] == SomeEnum.z);
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题