根据字段值显示枚举值

Display enum value based on field value

我想return一个基于字段值的枚举值。

例如:

如果Free value field的值为'15',我想return枚举值“1”,因为枚举值1的Label是:'10-20',因为15在 10-20 的范围内我想要 return 这个值。

我想为此创建一个显示方法。

我想我可以通过 switch case 场景来完成。
我怎样才能最好地设置它?

是的,使用 switch 语句即可。

试试这个:

int value;

;

switch (value)
{       
    case 1, 2, 3, 4 ,5:
        //Your code
        break;

    case 10, 11, 12, 13, 14, 15, 16, 17, 18 ,19, 20 :
        //Your code
        break;                    

    default :            
        //Your code
}

当然你可以用 switch / case 来做,但是如果你处理一个范围的值和一组有限的结果值(你的枚举元素)那么一个简单的 if / else if 可能更适合

因此,与其在您的案例分支中说明每个可能的值(1、2、3、4 bla bla),不如这样做

int x;
;

x = yourTable.YourField;
if (x >= 1 && x <= 15)
{
    return YourEnum::1to15;
}
else if (x >= 16 && x <= 20)
{
    return YourEnum::16to20;
}
// other possible ranges
else
{
    throw YourEnum::Unknown;
}

我个人喜欢用整数除法变得聪明的想法。

如果您的范围是 10 个一组,那么您只需除以 10 即可得到枚举值。

所以请看下面这段代码和截图:

static void Job1(Args _args)
{
    int         i;
    MyEnum      value;

    // Test #1
    i       = 15;           // Your number
    value   = (i/10);       // Enum result
    info(strFmt("Test #1: %1", value));

    // Test #2
    i       = 5;           // Your number
    value   = (i/10);       // Enum result
    info(strFmt("Test #2: %1", value));

    // Test #3
    i       = 22;           // Your number
    value   = (i/10);       // Enum result
    info(strFmt("Test #3: %1", value));
}