我如何在foreach循环indexOF中简化代码?

时间:2019-06-03 09:17:31

标签: c# foreach

我有一个模型,其中包含许多名为“ hours1,hours2,hours3 ...”的字符串,其中一个用于分配给foreach的索引。 我该如何简单地编写此代码?谢谢

if (colNames.IndexOf(item2) == 0)
{
    if (model.Hours == null)
    {
        item.Hours = 0;
    }
    else
    {
        item.Hours = (decimal)model.Hours;

    }
}
if (colNames.IndexOf(item2) == 1)
{
    if (model.Hours1 == null)
    {
        item.Hours = 0;
    }
    else
    {
        item.Hours = (decimal)model.Hours1;
    }
}

if (colNames.IndexOf(item2) == 2)
{
    if (model.Hours2 == null)
    {
        item.Hours = 0;
    }
    else
    {
        item.Hours = (decimal)model.Hours2;
    }

}

1 个答案:

答案 0 :(得分:4)

这不是很漂亮,但是也许:

decimal? hours = null;
switch(colNames.IndexOf(item2))
{
    case 0: hours = model.Hours; break;
    case 1: hours = model.Hours1; break;
    case 2: hours = model.Hours2; break;
}
item.Hours = hours ?? 0M;
相关问题