gpt4 book ai didi

c# - 在列表c#中查找下一个最高和下一个最低的数字

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:35 26 4
gpt4 key购买 nike

我有一个数字列表,如果我要查找的数字不在列表中,我希望能够找到列表中我要求的数字上下的下一个值。

double index = 5;
List<double> list = new List<double>() { 1, 2, 3, 7, 8, 9, };
//do code to find next highest/lowest
double higher = 7;
double lower = 3;

例如,因为 5 并不完全在列表本身中,所以我希望它返回上下一个最接近 5 的项目。所以对于这种情况,3 和 7。

最佳答案

原版

您可以使用 List 的 Sort()方法,然后使用 LINQ FirstOrDefault()LastOrDefault()

List<double> numbers = new List<double>()
{
1, 2, 3, 7, 8, 9
};

double input = 5;

numbers.Sort();

double nextHighest = numbers.FirstOrDefault(x => x > input);
double nextLowest = numbers.LastOrDefault(x => x < input);

更好的版本编辑 这实际上对两种情况都不起作用

最初我建议这是一个更有效的解决方案,但这不适用于给定输入之前 的数字。它仅适用于查找给定输入之后的数字。

使用 List<T> 可以提高效率, 有一个 Find()接受谓词的方法:

List<double> numbers = new List<double>()
{
1, 2, 3, 7, 8, 9
};

double input = 5;

numbers.Sort();

double nextHighest = numbers.Find(x => x > input);

这将 exit the loop immediately找到匹配项后(LastOrDefault() 必须为 iterate the entire collection )

两者的 fiddle here

关于c# - 在列表c#中查找下一个最高和下一个最低的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49902121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com