2013-12-15 4 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

을 제거, 코드 줄은 단정하고 트릭을 수행하지만 정말 OP 도움이 같은 몇 가지 LINQ 문을 강타 하는가? LINQ 키워드를 설명하는 유용한 링크를 포함하거나 비교를 위해 구식 방법을 보여줄 수 있습니다. – slugster

관련 문제