2016-09-13 43 views
1

我在這裏有一些代碼只從數組中找到左第一個小數字。如何從數組中找到特定的數字?

public void Test() { 
    int[] numbers = { 121, 124, 131, 135, 219, 287, 361, 367, 382, 420 }; 
    var onlyfirstNumbersLessThanGiven = numbers.TakeWhile(n => n < 135); 
    Console.WriteLine("First numbers less than "); 
    foreach (var n in onlyfirstNumbersLessThanGiven) 
    { 
     Console.WriteLine(n); 
    } 
} 

如何從上面的數組中找到131?請幫我

+1

非常感謝,雷南。 – durg

回答

0

這個例子有助於清除。

公共無效測試()

{

INT []數= {121,324,431,135,119,287,361,367,382,420};

var OFNLTG = numbers.Where(x => x < 121).Max();
Console.WriteLine(「First Max Number:」);

{ Console.WriteLine(OFNLTG);

}

}

+0

爲什麼這是被接受的答案?這正是我提出的解決方案 –

7

這個怎麼樣?

有序陣列:

numbers.LastOrDefault(x => x < 135); 

無序數組:

numbers.Where(x => x < 135).Max(); 
2

發現自己的號碼,因爲你知道你要的號碼,你不需要任何範圍。

numbers.Where(x => x == 131); 
3

儘管赫南答案是完全正確的,爲什麼不先用(),編輯或TakeWhile()與最後()?

例如

int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54, 
        83, 23, 87, 435, 67, 12, 19 }; 

int first = numbers.First(number => number > 80); 
int firstSmaller = numbers.TakeWhile(number => number < 80).Last(); // returns 65 since its the first one smaller than 80 in the series 

Console.WriteLine(first); 

,並與您的情況匹配它:

public void Test() { 
    int[] numbers = { 121, 124, 131, 135, 219, 287, 361, 367, 382, 420 }; 
    var onlyfirstNumbersLessThanGiven = numbers.TakeWhile(n => n < 135).Last(); 
    Console.WriteLine("First numbers less than "); 
    Console.WriteLine(onlyfirstNumbersLessThanGiven); 
} 

有限制:假設要排序的數組,並且必須按升序排列。

由於伊萬Stoev指出我的錯誤

+0

'您的示例中的第一個(n => n <135)'將返回121,而OP正在等待131 –

+0

Good Catch,現在我正在修改答案。 –

相關問題