我最终在列表中添加了一堆int(名为“listInts”)。
那不应该让任何人感到惊讶。
我的问题是我不希望在其中有任何负数,但是有可能会有三个,特别是-1,-2和-3。
我可以通过以下方式笨拙地删除它们:
if (listInts.Contains(-1) {
int i = listInts.IndexOf(-1);
listInts.Remove(i);
// etc.
}
...但是我知道这比一整只山猫的气味更臭。
有什么更好的方法?
最佳答案
我将使用LINQ:
listInts = listInts.Where(i => i >= 0).ToList();
根据将如何使用它,您还可以避免
ToList()
调用而不重新保存值:var positiveInts = listInts.Where(i => i >= 0);
这仍然可以让您根据需要进行枚举。
如果您需要更改列表,
List<T>.RemoveAll
实际上是一种更有效的方法:listInts.RemoveAll(i => i < 0);
但是,我不喜欢这种方法,因为它是一种会产生副作用的方法,并且如果您使用的是其他LINQ扩展方法,则往往会造成混淆(从而妨碍维护)。