我知道以下是不可能的,因为它必须是一个int
enum GroupTypes
{
TheGroup = "OEM",
TheOtherGroup = "CMB"
}
Run Code Online (Sandbox Code Playgroud)
从我的数据库中我得到一个包含不全面代码的字段(OEM和CMB).我想把这个领域变成一个枚举或其他可以理解的东西.因为目标是可读性,所以解决方案应该简洁.
我还有其他选择吗?
我正在尝试switch使用字符串的char索引和使用此包装器的Enum 创建语句,以从描述中获取所选枚举的值.它几乎允许您将字符串存储到枚举值.
这是我的if发言:
if (msgComingFromFoo[1] == Convert.ToChar(Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToString()))
{
//foo
}
Run Code Online (Sandbox Code Playgroud)
这是我的switch发言:
switch (msgComingFromFoo[1])
{
case Convert.ToChar(Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToString()):
break;
}
Run Code Online (Sandbox Code Playgroud)
为什么接受if声明而不是switch?我尝试将它转换为char,因为我从字符串中选择索引,但不幸的是它没有用.
更新:
这是Message.CodeEnum
public class Message
{
public enum Code
{
[Description("A")]
FOO_TRIGGER_SIGNAL
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我需要分配给枚举不枚举值是0.使用说明Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToString()自提包装回报A不0
错误:
期望一个恒定的价值
这是我的枚举:
public enum DocumentTypes
{
[EnumMember]
TYPE_1 = 1,
[EnumMember]
TYPE_2 = 2,
[EnumMember]
TYPE_3 = 3,
[EnumMember]
TYPE_4 = 4,
[EnumMember]
TYPE_5 = 5,
[EnumMember]
TYPE_6 = 6,
[EnumMember]
TYPE_7 = 7,
[EnumMember]
TYPE_8 = 12
}
Run Code Online (Sandbox Code Playgroud)
如果我想获得'TYPE_8',如果我只有12,有没有办法获得枚举值?
我试过这个:
((DocumentTypes[])(Enum.GetValues(typeof(DocumentTypes))))[Convert.ToInt32("3")].ToString()
Run Code Online (Sandbox Code Playgroud)
返回'TYPE_4'的值
我不知道该怎么做
我希望代码如下
enum myenum
{
name1 = "abc",
name2 = "xyz"
}
Run Code Online (Sandbox Code Playgroud)
并检查它
if (myenum.name1 == variable)
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
感谢名单.
如果我想将数据库中spicelevel列的值限制为1、2和3,则可以执行以下操作
private enum SpiceLevel
{
Low=1,
Medium=2,
Hot=3
}
Run Code Online (Sandbox Code Playgroud)
然后在代码中,我可以(int)SpiceLevel.Low选择1作为香料级别。
现在,如果我需要在数据库中只接受“ Red Rose”,“ White Rose”和“ Black Rose”作为列的值,该怎么办?有什么合适的方法来解决这个问题?
我正在考虑将它们存储在配置文件或常量中,但是它们都不像枚举那样优雅。有任何想法吗?
更新:
答案在这里为我工作