C# 删除列表C中的无穷大值
我有一个名为listDouble的列表,任何有值的项都是Infitity 我想从listDouble中删除它 试用: listDouble.RemoveAllitem=>item.Equals0.0&&item.EqualsInfinity 在使用代码将结果添加到列表之前,我还进行了检查:C# 删除列表C中的无穷大值,c#,C#,我有一个名为listDouble的列表,任何有值的项都是Infitity 我想从listDouble中删除它 试用: listDouble.RemoveAllitem=>item.Equals0.0&&item.EqualsInfinity 在使用代码将结果添加到列表之前,我还进行了检查: double result; if (result == Double.NegativeInfinity) result = 0; else return result; 但无法删除列表列表
double result;
if (result == Double.NegativeInfinity)
result = 0;
else
return result;
但无法删除列表列表Double中的值=无穷大。您只检查负无穷大,需要添加正无穷大检查
listDouble.RemoveAll(x => x == double.PositiveInfinity || x == double.NegativeInfinity);
或者只是:
listDouble.RemoveAll(x => double.IsInfinity(x));
您需要处理double.PositiveInfinity和double.NegativeInfinity常量:
list.RemoveAll(i => i == double.PositiveInfinity || i == double.NegativeInfinity);
要删除无限值,请执行以下操作:
listDouble = listDouble.Where(x => !Double.IsInfinity(x)).ToList();
要将无限值替换为0,请执行以下操作:
您需要使用IsNegativeInfinity和IsPositiveInfinity,或者只使用IsInfinity方法,而不是与Double.NegativeInfinity或Double.PositiveInfinity进行比较
我认为这是一个更优雅的解决方案,只需使用double.IsInfinity即可
在声明他还想删除值0后更新。我怀疑等于无穷大的值也等于0。试试这个
listDouble.RemoveAll(item => item.IsPositiveInfinity());
或者,如果您试图删除零和无穷大的值,则必须将&&to | | |。我想这就是您的情况: 只需使用Double.i验证,如下所示:
doubles.RemoveAll(doub => Double.IsInfinity(doub));
您还可以添加大小写检查,即如果Infinity是小写的,那么您需要使用小写值。为什么要比较string item.ToString==Infinity?类型为double的项不是吗?为什么要先将其与0.0进行比较?如果您删除此条件,它几乎可以工作。我还想删除item=0.0。如果您想在条件A上执行操作X,并在条件B上执行X,那么您想在条件A或B上执行X,而不是在条件A和B上执行X。只需doubleTest.RemoveAlldouble.IsInfinity即可。
List<double> doubleTest = new List<double>()
{
0,
12233302.4,
double.NegativeInfinity,
double.PositiveInfinity,
5
};
doubleTest.RemoveAll(item => double.IsInfinity(item) || item == 0);
listDouble.RemoveAll(item => item.IsPositiveInfinity());
doubles.RemoveAll(doub => Double.IsInfinity(doub));