繁体   English   中英

如何消除某些值(零)并从某个数据组中获取最大值?

[英]How can I eliminate certain values (zeros) and get the maximum value from some data group?

我是 C# 的新手。 我的问题是,我有 19 个双值。 其中一些等于零。 我想消除这些零并从剩余值中找到最大值。 我怎样才能做到这一点 ? 我的代码只包含双值。

double m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19;

        m1 = 200;
        m2 = 1000;
        m3 = 1500;
        m4 = 2000;
        m5 = 4000;
        m6 = 7000;
        m7 = 10000;
        m8 = 12000;
        m9 = 14000;
        m10 = 16000;
        m11 = 0;
        m12 = 0;
        m13 = 0;
        m14 = 0;

为每个值使用单独的变量会使任务变得非常乏味,因为您必须为这些变量中的每一个编写代码。 将值插入到集合中。

如果您有一组固定的值(例如,总是 19 个值),您可以使用数组。 如果您有不同数量的值,请使用列表。 我将使用列表,因为这是一种更通用的方法。

var m = new List<double> {
 200, 1000, 1500, 2000, 4000,  7000, 10000, 12000, 14000, 16000, 0,  0, 0, 0
};

现在您可以使用LINQ来处理值

double maximumValue = m
    .Where(x => x != 0)
    .Max();

Where扩展方法过滤值。 x =>引入了一个变量,每个值将依次分配给该变量。 x != 0是将应用于这些值中的每一个的条件。 只有满足条件的才通过过滤器,并交给下一阶段,即返回最大值的Max扩展方法。

请注意,只有当您只有负值和零导致负最大值时,过滤器才会起作用。 因为如果最大值为正,则零不会影响结果。

如果你知道最大值将是一个正值,那么你可以简单地写

double maximumValue = m.Max();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM