2013-12-15 46 views
0

我需要在數組中找到三個最小值並跟蹤它們的索引。但在我的代碼中,我看到只有的索引。你有什麼建議如何解決這個問題?在數組中獲取值和索引第一低值

static void Main() 
{ 
    int[] array = new int[] { 4, -2, 17, 8, -3, 7, 0, 1, 5, -12, -11, -4, 9 }; 
    var topThree = array.OrderBy(i => i).Take(3).ToArray(); 
    var topThreeIndex = array.Select((v, i) => new { Index = i, Value = v }) 
        .Where(p => Array.IndexOf(topThree, (int)p.Value) != -1) 
        .Select(p => p.Index); 
    foreach (var x in topThreeIndex) 
    { 
     Console.WriteLine("The number is :"+??+" , index is: "+x); 
    } 
} 

回答

3
var topThreeIndex = array.Select((v, i) => new { Index = i, Value = v }) 
         .OrderBy(e => e.Value) 
         .Take(3); 

foreach (var x in topThreeIndex) 
{ 
    Console.WriteLine("The number is: " + x.Value + " , index is: " + x.Index) 
} 
+0

'ToList'調用是多餘的 –

+0

感謝,除去 –

+2

說實話,這行代碼是整齊的伎倆,但重擊幾LINQ陳述了這樣真正幫助OP?你可以加入一些有用的鏈接來描述LINQ關鍵詞,並且/或者給他一個老式的方式以供比較。 – slugster

相關問題