どうも、ちょげ(@chogetarou)です。
enum(列挙型)をDictionaryに変換する方法を紹介します。
方法

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
*/
コメント