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

n4r*_*zul 6 c# list range find

我正在尝试使用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;
        }        
    }
}
Run Code Online (Sandbox Code Playgroud)

嗯,让我通过指定所有预期的结果使我的意图更清楚一些.

-1000和更少到-101应该给-1000
-100到-11应该给-100
-10到-1应该给-10
0到9应该给0
10到99应该给10
100-999应该给100
1000或更多应该给1000

Jul*_*ain 8

这应该工作:

values.FindLast(x => amount >= x.Value);
Run Code Online (Sandbox Code Playgroud)