C#for循环比较下一个值和当前值

时间:2013-07-17 03:32:11

标签: c# wpf entity-framework for-loop

我在这里有这段代码,基本上我正在做一个for循环,因为我从数据库中检索记录(使用实体框架),但是当我想比较使用if语句时出现错误:

       IList<Model.question> lstQuestion = qn.GetRecords(taskID, activityID);

        for(int i = 0 ; i <lstQuestion.Count()-1 ; i++)
        {
             .... //code here

            if(lstQuestion[i].QuestionNo == lstQuestion[i++].QuestionNo) // error at i++
            {
                tb.Text = lstQuestion[i++].QuestionContent;
                sp1.Children.Add(tb);
            }

我试过

  

lstQuestion.Count()而不是lstQuestion.Count() - 1;

也行不通。

QuestionNo是我数据库表中的一列。

完全错误:

enter image description here

当我删除整个if语句时,它工作正常。

5 个答案:

答案 0 :(得分:1)

关于(i ++)的上述答案是正确的。 另外,由于集合使用零基索引,你应该使用(Count() - 2)--- //(Count() - 2)+ 1是集合中的最后一项

答案 1 :(得分:0)

您将i递增三次。试试这个:

for(int i = 0 ; i <lstQuestion.Count(); i++)
        {
             .... //code here

            if(lstQuestion[i].QuestionNo == 1stQuestion[i+1].QuestionNo) // error at i++
            {
                tb.Text = lstQuestion[i+1].QuestionContent;
                sp1.Children.Add(tb);
            }

答案 2 :(得分:0)

在== 1stQuestion [i]中有一个数字1,而不是像ohter lstQuestion [i]引用中的小写字母L.

答案 3 :(得分:0)

这可以用if语句解决你的问题。

    for(int i = 0 ; i <lstQuestion.Count()-1; i++)
    {
         .... //code here

        if(lstQuestion[i].QuestionNo == 1stQuestion[i+1].QuestionNo) 
        {
            tb.Text = lstQuestion[i+1].QuestionContent;
            sp1.Children.Add(tb);
        }

但我认为你在这一行上遇到错误

                      sp1.Children.Add(tb);

答案 4 :(得分:0)

尝试使用++ i而不是i ++。

IList<Model.question> lstQuestion = qn.GetRecords(taskID, activityID);

        for(int i = 0 ; i <lstQuestion.Count()-1 ; i++)
        {
             .... //code here

            if(lstQuestion[i].QuestionNo == lstQuestion[++i].QuestionNo) // error at i++
            {
                tb.Text = lstQuestion[i].QuestionContent;
                sp1.Children.Add(tb);
            }