2012-11-29 6 views
1

나는 두 배의 배열과 임계 값을가집니다. 인덱스의 값이 임계 값보다 큰 배열에서 첫 번째 인덱스를 선택하고 싶습니다.임계 값보다 큰 값의 배열 인덱스 선택

LINQ에서 어떻게 달성 할 수 있습니까?

나는 그것이 작동있어 :

var n = acc_avg.Select((val, index) => new {Val = val, Index = index}) 
       .Where(l => l.Val > threshold) 
       .First() 
       .Index 

하지만 더 좋은 방법이 무엇입니까?

var n = Array.FindIndex(acc_avg, x => x > threshold); 
+0

얼마나 간단하게 할 수 있습니까? 더 큰 배열에서 새 배열을 선택한 다음 where 조건을 적용합니다. 당신은 총 최대 값 또는 무엇인가 얻으려고 시도하고 있습니까? –

답변

3

당신은 Array.FindIndex를 사용할 수 있습니다. 먼저 FirstOrDefault를 고려하고 액세스하기 전에 null을 테스트합니다. 개체가 이미 인덱스 속성을 가지고 (또는 순서의 위치가 당신에게 중요하지 않은 경우)이을 단축 할 수 있다면 물론

var n = acc_avg.Select((val,index) => new {Val= val, Index = index}).Where(l=> l.Val > threshold).FirstOrDefault();  
if(n != null) 
    DoSomething(n.Index); 

:

var n = acc_avg.FirstOrDefault(l => l > threshold); 

하지만 당신은 아마 알고 그. :)

1

귀하의 솔루션은 나에게 꽤 괜찮은 외모,하지만 난 당신의 기준을 충족하는 순서에 요소가없는 경우에 예외를 던질 것으로 예상 :

관련 문제