[C#]Enum(列挙型)をDictionaryに変換するには?

C#

どうも、ちょげ(@chogetarou)です。

enum(列挙型)をDictionaryに変換する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

enum(列挙型)をDictionaryに変換するには、System.Linqを使います。

まず、System.Linqを導入します。

using System.Linq;

次に、Enum.GetValues()を呼び出します。

GetValues()の引数でtypeof()を呼び出し、引数に列挙型を指定します。

GetValuesからCast<T>()を呼び出します。(Tは列挙型)

そして、Cast<T>()からToDictionary()を呼び出します。

あとは、ToDictionary()の第1引数に引数のToString()の戻り値を返すラムダ式、第2引数に引数をint型を返すラムダ式を指定します。

Dictionary<string, int> names = Enum.GetValues(typeof(enumName))
            .Cast<enumName>()
            .ToDictionary(k => k.ToString(), v => (int)v);

上記のToDictionary()は、列挙型をDictionaryに変換した結果を返します。

使用例

using System;
using System.Collections.Generic;
using System.Linq;
public class Example
{
    public enum Names 
    {
        Taro = 18,
        Ryoma = 37,
        Kazuma = 16,
        Keiko = 24,
        Megumi = 10,
    }
    
    public static void Main()
    {
        Dictionary<string, int> names = Enum.GetValues(typeof(Names))
            .Cast<Names>()
            .ToDictionary(k => k.ToString(), v => (int)v);
        
        foreach(var name in names)
        {
            Console.WriteLine(name.Key + ':' + name.Value);
        }
    }
}

/*
    出力:
    Megumi:10
    Kazuma:16
    Taro:18
    Keiko:24
    Ryoma:37
*/

コメント

タイトルとURLをコピーしました