如何破解第二个foreachloop C#

时间:2018-12-17 15:54:26

标签: c#

你们该如何打破这种情况的第二个循环?

我必须得到价值的组合 COMBINATION MIGHT有6个值。 但某些值为null或“” 我想做的是,获取所有可能的组合。 如果值是null或“”,我想跳到第二个循环,因为第一个条件设置了其余的组合(如果不是)  我要继续完成所有可能的组合。 在这个场景中,我的代码回到了最后一个循环。 有什么想法吗?

foreach (var item in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria1").selectValueText.Where(x => x.value != "").ToList())
{
    foreach (var item2 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria2").selectValueText.Where(x => x.value != "").ToList())
    {
        foreach (var item3 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria3").selectValueText.Where(x => x.value != "").ToList())
        {
            foreach (var item4 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria4").selectValueText.Where(x => x.value != "").ToList())
            {
                foreach (var item5 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria5").selectValueText.Where(x => x.value == "").ToList())
                {
                    foreach (var item6 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria6").selectValueText.Where(x => x.value != "").ToList())
                    {
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

在第二个循环中,创建一个用于存储是否找到空值的变量:

//at beginning of second loop
bool foundNull = false;

检查并找到空值时,请设置此变量:

//anywhere you need to check if a value is null
if (isSomeValueNull(someValue))
{
    foundNull = true;
    break;
}

在每个循环中(当然,第二个和第一个除外),在内循环之后,请检查以下内容:

//after every inner loop
if (foundNull == true)
    break;

foreach (var item in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria1").selectValueText.Where(x => x.value != "").ToList())
{
    foreach (var item2 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria2").selectValueText.Where(x => x.value != "").ToList())
    {
        bool foundNull = false;

        foreach (var item3 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria3").selectValueText.Where(x => x.value != "").ToList())
        {
            foreach (var item4 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria4").selectValueText.Where(x => x.value != "").ToList())
            {
                foreach (var item5 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria5").selectValueText.Where(x => x.value == "").ToList())
                {
                    foreach (var item6 in result.ComboValues.FirstOrDefault(x => x.nameId == "Categoria6").selectValueText.Where(x => x.value != "").ToList())
                    {
                        if (isSomeValueNull(someValue))
                        {
                            foundNull = true;
                            break;
                        }
                    }
                    if (foundNull == true)
                        break;
                }
                if (foundNull == true)
                    break;
            }
            if (foundNull == true)
                break;
        }
    }
}