【问题标题】:How to check if a decimal value from input is greater than a list of decimal如何检查输入的十进制值是否大于十进制列表
【发布时间】:2019-01-15 06:37:05
【问题描述】:

我有一个十进制列表。我需要确定 decimal 输入是否大于列表中存在的任何值。

Decimal threshold = 20;

List<Decimal> InputList = new List<Decimal>() { 10, 20, 35 };

请注意,此输入列表中可能有一个或多个项。

我想检查其中一项是否大于阈值,然后做其他事情。

【问题讨论】:

    标签: c# .net c#-4.0 decimal


    【解决方案1】:

    您可以使用Any。它检查列表中是否至少有一个元素与条件匹配。

    InputList.Any(x => x > threshold);
    

    【讨论】:

    • 谢谢你会使用这个技巧,并在几个小时内让你知道并接受你的回答。如果某些内容为空或 null,则不会抛出异常?
    • @Learner 如果 InputList 为空,那么它应该抛出空引用异常,否则它不会
    • @Learner 如果列表为空,Any 将返回 false,我认为这对您来说没问题。 @Reyan 也许你应该在你的(有效)答案中添加一个if 子句,Any 作为一个声明并不是真的有用;)
    • @ReyanChougle:当然,让我非常清楚地告诉你,虽然我是在 3.5 小时前的晚上从办公室出来的,但我仍然会远程控制我的机器以使用你的逻辑和快速的一轮测试和如果一切正常,请接受您的回答。
    • @vc74: 非常感谢你知道我是一个外行人非常有用
    【解决方案2】:

    如果你不熟悉 Linq,你可以写一个这样的函数:

    private static bool CheckIfLarger(IEnumerable<double> list, double value){
      foreach(var item in list) if(value<=item) return false;    
      return true;
    }
    

    编辑: 说明:您将您的值与列表中的每个数字进行比较,如果它更小,则返回 false,因为您的数字不小于列表中的所有其他数字。如果这根本没有发生,则返回 true,因为显然它不小于其他任何一个。

    【讨论】:

    • 我认为你应该颠倒truefalse
    • 不,看看我的 if 语句。我认为如果它更大,最好返回true
    • @L.W.:谢谢,但我听不懂你的回答。爱因斯坦说,如果信息没有以可以理解的方式进行教授或交流,那么这个人本身就没有正确理解它。好吧,不是你,但对于我作为一个在业务分析师或测试员或项目经理技能方面拥有几年开发经验的外行来说,我觉得很难理解。尽管我不知道幕后发生了什么,但其他评分为 5 的答案非常简单,哈哈
    • 确实如此,但它并不打算像 Linq.Any 那样。我认为这是一个品味问题。
    • 如果列表为空,此代码将返回 true,另外,如果列表中的第一项小于阈值,则返回 false。
    猜你喜欢
    • 1970-01-01
    • 2015-05-07
    • 2013-01-13
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2018-08-20
    相关资源
    最近更新 更多