如何从 List 中删除负值
本文关键字:删除 int List | 更新日期: 2023-09-27 18:36:14
我最终在我的列表中得到了一堆整数(名为"listInts")。
这不应该让任何人感到惊讶。
我的问题是我不想要任何负数,但有可能有三个,特别是 -1、-2 和 -3。
我可以通过以下方式笨拙地删除它们:
if (listInts.Contains(-1) {
int i = listInts.IndexOf(-1);
listInts.Remove(i);
// etc.
}
。但我知道这散发出一种代码气味,比一整只极猫更臭。
什么是更好的方法?
listInts.RemoveAll(t => t < 0)
我会使用 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 扩展方法,往往会造成混淆(从而妨碍维护)。