![](/img/trans.png)
[英]Unity3d c# finding the biggest value of x in a Vector3 (xyz) List
[英]Finding the next biggest value in the array C#
我有一個5個字符的數組和一個'4'字符,我想在數組中找到下一個最大的值'6'。 我將如何去做?
多謝你們
char findNextBiggestValue = '4';
char array[5] {'3','6','7','8','9'};
試試這個,先排序,然后過濾:
char findNextBiggestValue = '4';
char array[5] {'3','6','7','8','9'};
var val = array.OrderBy(s => s).FirstOrDefault(x => x > findNextBiggestValue);
要么
var val = array.Where(x => x > findNextBiggestValue).Min();
我會這樣:
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
是必須具有運算符的值類型,並且將任何值作為默認值返回將是一個bug。
另一種選擇是返回一個char?
而是具有null
值表示沒有返回結果。
在這種情況下,代碼如下所示:
char? min = array.Where(c => c > findNextBiggestValue).Cast<char?>().Min();
如果您不想對數組進行排序,請嘗試這種方式。
char findNextBiggestValue = '4';
char[] array = {'3', '6', '7', '8', '9'};
// No elemnt? Do nothing
if (array.Length < 1)
{
return;
}
// Init it a large value
char minValue = 'z';
// Look for the next bigger value
foreach (var c in array)
{
if (findNextBiggestValue < c && c < minValue)
{
minValue = c;
}
}
Console.WriteLine(minValue);
array.FirstOrDefault(x => x>'4')
您可以使用FirstOrDefault擴展方法來實現此目的:
array.FirstOrDefault(m=> int.Parse(m.ToString()) > int.Parse(findNextBiggestValue.ToString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.