使用特定列表值

时间:2014-02-16 16:21:41

标签: c# list

基本上在创建列表“rValues”之后,我使用列表来查看其中是否包含任何值is == 0。所引用的行被注释为“关注行”,但是当upperB设置为5时,这会导致程序为is ==0列表中的每个值写下x的值。

我的问题是,有没有办法说明列表中的第一个值is == 0它写下x的值然后程序继续,几乎就像只有一个值的一个列表被发现它被注意到,其余的列表被删除?谢谢。

     List<int> rValues = new List<int>(); 

            do
            {
                x++;
                v = 0;
                rValues.Clear();
                do
                {
                    v++;
                    r = x % v;
                    rValues.Add(r);
                } while (v < x);

                foreach (int B in rValues)
                {
                    if (B == 0) // line of concern
                    {
                        Console.WriteLine(x);
                    }
                    else
                    {
                        continue;
                    }   
                }

            }
            while (x != upperB);
            Console.ReadLine();

       }
    }
}

3 个答案:

答案 0 :(得分:0)

我不知道为什么你在代码中编写了所有其他循环。要回答这个问题,只需要像下面那样,并且“继续”;不是必需的。

int c=0;
foreach (int B in rValues)
                {
c++;
                    if (B == 0) // line of concern
                    {
                        Console.WriteLine(x);
                    }
                    else
                    {
                        //continue;
rValues.deleteat(c);
                    }   
                }

答案 1 :(得分:0)

尝试使用linq而不是foreach循环。然后只需致电rValues.Clear()

代码应如下所示:

List<int> rValues = new List<int>(); 

do
{
    x++;
    v = 0;
    rValues.Clear();
    do
    {
        v++;
        r = x % v;
        rValues.Add(r);
    } while (v < x);

//my LINQ expression
    Var B = rValues.FirstOrDefault( (result) => result==0);
    rValues.Clear();

//back to your code
    while (x != upperB);
    Console.ReadLine();

}

答案 2 :(得分:0)

尝试这样的事情,打破循环,RemoveAt()不起作用的原因是它是一个Foreach循环,你在迭代它时不能修改Enumerable。这是安全的事情。

List<int> rValues = new List<int>();
bool found = false;
    do
    {
        x++;
        int v = 0;
        rValues.Clear();
        do
        {
            v++;
            int r = x % v;
            rValues.Add(r);
        } while (v < x);

        foreach (int B in rValues)
        {
            if (B == 0) // line of concern
            {
                found = true; 
                Console.WriteLine(x);
                break;
            }
        }

    }
    while (x != upperB && !found);

    Console.ReadLine();