我需要设置值int。怎么做?
var list = from Enum e in Enum.GetValues(enumValue.GetType())
select new SelectListItem
{
Selected = e.Equals(enumValue),
Text = e.ToDescription(),
Value = e.ToString()// need int
};
如果我设置Value = ((int)e).ToString()
我收到错误:
无法将类型'System.Enum'转换为'int'
答案 0 :(得分:2)
C#中的AFAIK,Enums可以转换为int:
Value = ((int)e).ToString()
只要底层类型是int或可转换为int即可。
答案 1 :(得分:2)
转换为int
并从中获取字符串:
Value = ((int)e).ToString()
所有枚举都基于整数类型,因此强制转换是最简单的解决方案(但如果枚举基于long
,则可能会出现溢出)。
此外,从Enum.GetValues
返回的类型是枚举的值 - 您的LINQ应该是:
from e in Enum.GetValues(enumValue.GetType())
由于e
不属于Enum
类型。
答案 2 :(得分:1)
Value = Convert.ToInt32(e.ToString())
答案 3 :(得分:0)
您可以尝试使用
(int)YourEnum.enumValue;
或
(int)e
答案 4 :(得分:0)
var list = from Enum e in Enum.GetValues(enumValue.GetType())
select new SelectListItem
{
Selected = e.Equals(enumValue),
Text = e.ToDescription(),
Value = (int) e
};
答案 5 :(得分:0)
您可以通过将枚举转换为int类型来直接转换枚举。