C# 删除列表C中的无穷大值

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; 但无法删除列表列表

我有一个名为listDouble的列表,任何有值的项都是Infitity

我想从listDouble中删除它

试用:

listDouble.RemoveAllitem=>item.Equals0.0&&item.EqualsInfinity

在使用代码将结果添加到列表之前,我还进行了检查:

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));