Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 内部foreach循环在第二次迭代时不从第二个元素继续_C#_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C# 内部foreach循环在第二次迭代时不从第二个元素继续

C# 内部foreach循环在第二次迭代时不从第二个元素继续,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我在内部foreach循环中使用了一个中断,并继续了外部循环,但是当再次涉及到内部foreach时,它是从第一项开始的,而不是从第二项开始的。我需要你的帮助 foreach(列表1中的变量项) { 布尔标志=假; foreach(列表2中的变量项) { item.category=item.category; item.text=item.text; item.key=item.key; db.Entry(item).State=EntityState.Modified; db.SaveChan

我在内部foreach循环中使用了一个中断,并继续了外部循环,但是当再次涉及到内部foreach时,它是从第一项开始的,而不是从第二项开始的。我需要你的帮助

foreach(列表1中的变量项)
{
布尔标志=假;
foreach(列表2中的变量项)
{
item.category=item.category;
item.text=item.text;
item.key=item.key;
db.Entry(item).State=EntityState.Modified;
db.SaveChanges();
flag=true;
打破
}
如果(标志)继续;
}

如果要使用两个集合中的相同索引,请使用如下代码

for (int i = 0; i < list1.Count; i++)
{
    item item1 = list1[i];
    item item2 = list2[i];
}
for(int i=0;i
如果你打破了一个
foreach
循环,并再次点击它,那么这就是应该发生的事情。
如果您想在第二、第三或第n个位置继续,请不要中断循环,或者使用
continue。让我举个例子:

//这是我们将迭代的整数列表
var outerList=新列表{1,2,3,4,5};
var innerList=新列表{1,2,3,4,5};
foreach(外部列表中的var outerItem)
{
//这将在执行过程中打印“1、2、3、4、5”(如预期)
WriteLine($“outerList项:{outerItem}”);
foreach(innerList中的var innerItem)
{
//这将始终打印“1”,而不会打印其他内容(如预期的那样)*
WriteLine($“innerList项:{innerItem}”);
打破
}
}
*这是因为
foreach
永远无法继续到
内部列表的第二个条目,因此它只打印第一个条目5次(或者打印
最外层的条目数)。整个输出看起来是这样的(没有#…)

现在,如果我们删除
中断
,这将是输出:

outerList item: 1
innerList item: 1
innerList item: 2
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 2
innerList item: 1
...
如果在外循环的第二次迭代中,希望从内循环的第二个位置开始,则需要使用标准的
for
循环和整数迭代器,如下所示:

var outerList=新列表{1,2,3,4,5};
var innerList=新列表{1,2,3,4,5};
for(int i=0;i
这将按预期打印:

outerList item: 1
innerList item: 1
innerList item: 2
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 2
innerList item: 2
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 3
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 4
innerList item: 4
innerList item: 5
outerList item: 5
innerList item: 5

p、 请注意,我是如何为外部/内部列表以及迭代器使用单独的名称的。否则这甚至无法编译(@mjwills已经在评论中指出了这一点)

这里的主要问题是,您的两个循环共享相同的
变量名。不要那样做。使用
itemOuter
itemInner
。你开始告诉我们目标是什么,怎么样?现在你有两个名字相同的变量,用于每个循环的内部和外部范围。否决投票的确切原因是我们不理解你的问题。是的,实际上我在这里只分享了一个例子,不是实际的。所以我只是想知道是否有可能从第二项开始再次启动内部循环?@mjwills和代码的目标描述。同样的想法对我有帮助。非常感谢你有点晚了,但你解释得更好了。感谢@mindspenice idea为内部和外部变量使用不同的变量名。
outerList item: 1
innerList item: 1
innerList item: 2
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 2
innerList item: 2
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 3
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 4
innerList item: 4
innerList item: 5
outerList item: 5
innerList item: 5