使用嵌套循环迭代列表时删除列表索引

时间:2018-05-24 19:17:33

标签: c# list loops nested

嘿,所以我试图执行这段代码,但是由于它试图在被删除的索引处执行第一个循环,它会超出界限。有没有人知道我可以在不超出界限的情况下执行此代码的方法?

  for (int i = myList1.Count - 1; i >= 0; i--)
    {
        for (int j = 0; j < myList2.Count - 1; j++)
        {
            if (myList2[j] != myList1[i])
            {
                myList1.RemoveAt(i);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

Obligitory Linq答案:

myList1 = myList1.Where(i => !myList2.Contains(i)).ToList();

基本上,您不必自己循环使用它们,而是使用Linq为您完成。您将myList1设置为与[myList2不包含项目X]的where子句匹配的项目。