我试图从List<int>
中移除List<List<int>>
,我到处寻找并找不到解决方案。
这是我迄今为止所做的尝试:
List<List<int>> my2DList = ... ; // this is where I assign my 2D list
my2DList.Remove(new List<int>( ... ));
但my2DList
的长度保持不变。我该怎么办?
答案 0 :(得分:7)
问题是List<int>
不会覆盖Equals
/ GetHashCode
,因此您的新列表永远不会与现有列表相同。 (基本上,它将比较参考而不是内容。)
三个选项:
Remove
RemoveAt
RemoveAll
最后一个例子:
List<int> listToRemove = new List<int> { ... };
my2DList.RemoveAll(x => x.SequenceEqual(listToRemove));
答案 1 :(得分:3)
您需要删除要删除的确切对象,而不是新对象(这将是一个不同的对象)。例如:
my2DList.Remove(my2DList[3]);
如果您不知道索引或对象,则需要遍历List以找到正确的对象。