如何使用 IEnumerable.Max 扩展从小于输入值的双精度列表中获取最大值

How to get max value from list of doubles that are less than an input value using IEnumerable.Max extensions

我正在尝试从双打列表中获取低于特定输入值的最大值。 代码:

List<double> tmpList = new List<double> { 1.2d, 2.8d, 3.4d, 0.4d, 6.3d };
double inputValue = 3.1d;
int countOfValuesBelowInput = tmpList.Count(z => z < inputValue); // this works
double maxBelowInput = tmpList.Max(z => z < inputValue); // compile error 

我在最后一行遇到编译错误 - 说 "Cannot implicitly convert bool to double"。我做错了什么?感谢您的帮助,如果这是重复的,我们深表歉意 - 已尽力 google.

您可以在使用最大值之前使用 Where 过滤列表,如下所示:

double maxBelowInput = tmpList.Where(z => z < inputValue).Max();

您当前的代码不起作用的原因是您正在使用的 Max 的重载需要 选择器 ,而不是 谓词.

选择器是一个获取项目并输出相关值的函数,通常是项目的 属性。例如,如果列表的类型为 Person,则可以使用 .Max(x => x.Age) 获取人员的最大年龄。您在这里 从每个元素中选择 一些内容。

另一方面,Count接受一个谓词,它基本上是一个过滤器。它是一个接受项目和 returns truefalse 的函数。