ArrayList数组去掉包含的数组

ArrayList数组去除包含的数组

            ArrayList al1 = new ArrayList();
            ArrayList al2 = new ArrayList();
            for (int i = 0; i < 7; i++)
            {
                al1.Add(new string[] { "A" + i, "B" + i, "C" + i });
            }
            for (int i = 3; i < 6; i++)
            {
                al2.Add(new string[] { "A" + i, "B" + i, "C" + i });
            }
            foreach (string[] lll in al2)
            {
                al1.Remove(lll);
            }
上面例子简单的说明了我的意图,al2是al1中满足某个条件后生成的新的集,想从al1删除al2

我原程序是这样的:

foreach(string[] list in al1)
{
    if(如果满足条件) { al2.Add(list);}
}
因为在循环时不能直接从al1中删除,所以只能添加一个al2,然后在循环结束后再从al1中删除,不知道有什么办法,弄了好久没弄好。
------解决方案--------------------
你用的foreach,当然不能再循环的时候删除你要循环枚举的对象了

改成用for,这样你就可以在循环的时候删除你遍历的数组了
------解决方案--------------------
list1 = list1.Where(x => list2.All(y => !x.SequenceEquals(y))).ToList();