如何简化MVC模型中的switch case语句?

时间:2019-06-07 09:36:14

标签: c# asp.net-mvc

我有这段代码可以将来自excel导入的“ hours1,hours2,hours3”中的数据插入数据库,但这会使代码通过即时通讯的方式变得更大,这是我的代码,我该如何简化了hours1,hours2 == null的部分。

switch (colNames.IndexOf(item2))
{
    case 0:
        if (model.Hours == null)
        {
            item.Hours = 0;
        }
        else
        {
            item.Hours = (decimal)model.Hours;
            item.Hours_Remaining = (decimal)model.Hours;
        }
        break;
    case 1:
        if (model.Hours1 == null)
        {
            item.Hours = 0;
        }
        else
        {
            item.Hours = (decimal)model.Hours1;
            item.Hours_Remaining = (decimal)model.Hours;
        }
        break;
    case 2:
        if (model.Hours2 == null)
        {
            item.Hours = 0;
        }
        else
        {
            item.Hours = (decimal)model.Hours2;
            item.Hours_Remaining = (decimal)model.Hours;
        }
        break;
    case 3:
        if (model.Hours == null)
        {
            item.Hours = 0;
        }
        else
        {
            item.Hours = (decimal)model.Hours3;
            item.Hours_Remaining = (decimal)model.Hours;
        }
        break;
} 

1 个答案:

答案 0 :(得分:2)

您可以拥有这样的私有方法

private void NameOfPrivateMethod(object objValue,Hours hours,Item item)
        {
            if (objValue == null)
            {
                item.Hours = 0;
            }
            else
            {
                item.Hours = (decimal)objValue;
                item.Hours_Remaining = (decimal)hours;
            }
        }

并像这样使用它(您需要根据需要对其进行一些更改)

NameOfPrivateMethod(model.Hours1, model.Hours,Item)