从枚举值创建字典
本文关键字:字典 创建 枚举 | 更新日期: 2023-09-27 18:34:49
我有以下枚举:
public enum Brands
{
HP = 1,
IBM = 2,
Lenovo = 3
}
我想从中制作一个格式的字典:
// key = name + "_" + id
// value = name
var brands = new Dictionary<string, string>();
brands[HP_1] = "HP",
brands[IBM_2] = "IBM",
brands[Lenovo_3] = "Lenovo"
到目前为止,我已经完成了此操作,但是在从该方法创建字典时遇到困难:
public static IDictionary<string, string> GetValueNameDict<TEnum>()
where TEnum : struct, IConvertible, IComparable, IFormattable
{
if (!typeof(TEnum).IsEnum)
throw new ArgumentException("TEnum must be an Enumeration type");
var res = from e in Enum.GetValues(typeof (TEnum)).Cast<TEnum>()
select // couldn't do this
return res;
}
谢谢!
您可以使用 Enumerable.ToDictionary(( 创建字典。
不幸的是,编译器不允许我们将 TEnum 转换为 int,但由于您已经断言该值是 Enum,我们可以安全地将其转换为对象,然后转换为 int。
var res = Enum.GetValues(typeof(TEnum)).Cast<TEnum>().ToDictionary(e => e + "_" + (int)(object)e, e => e.ToString());
//使用以下代码:
Dictionary<string, string> dict = Enum.GetValues(typeof(Brands)).Cast<int>().ToDictionary(ee => ee.ToString(), ee => Enum.GetName(typeof(Brands), ee));