我有一个由5个字符组成的数组和一个字母' 4',我希望在数组中找到下一个最大的值,即' 6'。我该怎么做呢?
谢谢你们
char findNextBiggestValue = '4';
char array[5] {'3','6','7','8','9'};
答案 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());