找到数组C#中的下一个最大值

时间:2015-09-22 02:45:16

标签: c# arrays

我有一个由5个字符组成的数组和一个字母' 4',我希望在数组中找到下一个最大的值,即' 6'。我该怎么做呢?

谢谢你们

char findNextBiggestValue = '4';
char array[5] {'3','6','7','8','9'};

5 个答案:

答案 0 :(得分:3)

试试这个,首先排序,然后过滤:

char findNextBiggestValue = '4';
char array[5] {'3','6','7','8','9'};
var val = array.OrderBy(s => s).FirstOrDefault(x => x > findNextBiggestValue);

答案 1 :(得分:3)

我会这样做:

char findNextBiggestValue = '4';
char[] array = new [] { '3','6','7','8','9'};

char min = array.Where(c => c > findNextBiggestValue).Min();

这比排序更快,因为它只对数组进行一次迭代。 LINQ的运算符链非常有效地与.Where(...).Min()运算一起使用。

如果.Where(...)运算符没有返回任何元素,则此代码也会返回异常。这是设计为char是必须具有运算符的值类型,并且将任何值作为默认值返回将是一个错误。

另一种选择是返回char?而使null值代表不返回结果。

在这种情况下,代码如下所示:

char? min = array.Where(c => c > findNextBiggestValue).Cast<char?>().Min();

答案 2 :(得分:1)

如果您不想对数组进行排序,请尝试这种方式。

{{1}}

答案 3 :(得分:0)

array.FirstOrDefault(x =&gt; x&gt;'4')

答案 4 :(得分:0)

您可以使用FirstOrDefault扩展方法来实现此目的:

 array.FirstOrDefault(m=> int.Parse(m.ToString()) > int.Parse(findNextBiggestValue.ToString());