c# 使用 lambda 查找范围内的值

标签 c# list find range

我正在尝试使用 Find 方法使用 lambda 表达式根据另一个值在值列表中查找一个项目。在这个例子中,我期望返回 -1000,但对于我来说,我就是想不出合适的 lamda 表达式。如果这听起来令人困惑,我希望下面的代码和评论能更好地解释它。 TIA。

using System;
using System.Collections.Generic;

namespace TestingStuff {
    class Program {
        static void Main(string[] args) {
            double amount = -200;

            //The Range of values
            List<MyValue> values = new List<MyValue>();
            values.Add(new MyValue(-1000));
            values.Add(new MyValue(-100));
            values.Add(new MyValue(-10));
            values.Add(new MyValue(0));
            values.Add(new MyValue(100));
            values.Add(new MyValue(1000));

            //Find it!!!  
            MyValue fVal = values.Find(x => (x.Value > amount) && (x.Value < amount));

            //Expecting -1000 as a result here since -200 falls between -1000 and -100
            //if it were -90 I'd expect -100 since it falls between -100 and 0
            if (fVal != null)
                Console.WriteLine(fVal.Value);            
            Console.ReadKey();
        }
    }

    public class MyValue {
        public double Value { get; set; }
        public MyValue(double value) {
            Value = value;
        }        
    }
}

嗯,让我通过指定所有预期结果来更清楚地说明我的意图。

-1000 和小于-101 应该给-1000
-100 到 - 11 应该给 -100
-10 到 -1 应该给 -10
0 到 9 应该给 0
10 到 99 应该给 10
100-999应该给100
1000以上给1000

最佳答案

这应该有效:

values.FindLast(x => amount >= x.Value);

关于c# 使用 lambda 查找范围内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2881585/

相关文章:

c# - 什么时候在 C# 中拥有公共(public)无参数构造函数很重要?

python - 在 if 语句中中断 for 循环

ruby-on-rails - 查找具有所有关联记录的记录

c# - 如何从 ThreadPool.QueueUserWorkItem 捕获异常?

c# - 如何从xaml获取屏幕尺寸?

c# - 按钮按下的可配置热键 C#

python - 根据条件删除列表的元素

java - 如何根据字节减少 Java List 对象的大小

JQuery 过滤或查找每个项目中间 ID 不同

jquery - 如何检测 find() 函数没有找到任何内容?