列挙型をC#のリストに変換します
この投稿では、列挙型をC#のリストに変換する方法について説明します。
1.列挙型メンバーのリストを取得します
アイデアは、 Enum.GetValues() 列挙型定数の値のアレイを取得するメソッド。取得するには IEnumerable<T>
列挙型のすべての値のうち、 Cast<T>()
アレイ上。リストを取得するには、 ToList()
キャスト後。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using System; using System.Linq; using System.Collections.Generic; public class Example { public enum Days { Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7 } public static void Main() { List<Days> days = Enum.GetValues(typeof(Days)) .Cast<Days>() .ToList(); Console.WriteLine(String.Join(Environment.NewLine, days)); } } /* 出力: 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日 日曜日 */ |
2.列挙型メンバーのアレイを取得します
LINQを使用する代わりに Cast<T>()
メソッドでは、によって返されるアレイをキャストできます Enum.GetValues()
以下に示すように、メソッド。次のソリューションは、リストではなくアレイを返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
using System; public class Example { public enum Days { Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7 } public static void Main() { Days[] days = (Days[])Enum.GetValues(typeof(Days)); Console.WriteLine(String.Join(Environment.NewLine, days)); } } /* 出力: 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日 日曜日 */ |
3.定数値を持つ列挙型メンバーのリストを取得します
列挙型メンバーとそれに関連付けられた定数値のリストを取得するには、LINQを使用できます。 Select() 以下に示すように、メソッド:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
using System; using System.Linq; using System.Collections.Generic; public class Example { public enum Days { Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7 } public static void Main() { var days = Enum.GetValues(typeof(Days)) .Cast<Days>() .Select(d => (d, (int)d)) .ToList(); Console.WriteLine(String.Join(Environment.NewLine, days)); } } /* 出力: (月曜日、1) (火曜日、2) (水曜日、3) (木曜日、4) (金曜日、5) (土曜日、6) (日曜日、7) */ |
4.定数値を持つ列挙型メンバーの辞書を取得します
列挙型メンバーとそれに関連付けられた定数値のディクショナリを取得するには、LINQを使用できます。 ToDictionary()
以下に示すように、メソッド:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using System; using System.Linq; using System.Collections.Generic; public class Example { public enum Days { Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7 } public static void Main() { Dictionary<string, int> days = Enum.GetValues(typeof(Days)) .Cast<Days>() .ToDictionary(k => k.ToString(), v => (int)v); Console.WriteLine(String.Join(Environment.NewLine, days)); } } /* 出力: [Monday, 1] [Tuesday, 2] [Wednesday, 3] [Thursday, 4] [Friday, 5] [Saturday, 6] [Sunday, 7] */ |
これで、列挙型をC#のリストに変換できます。