我正在尝试使用 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/