2013-05-15 1 views
0

테이블을 결합하여 얻은 목록이 있습니다.이 목록의 범위 및 범위가 높고 목표가 최대 값이 낮은 행을 선택하는 것입니다. 그것은 내가 LINQ 사용하여이를 달성 할 수있는 방법 가장 높은 lowrange 발속성의 최대 값을 기준으로 목록을 정렬하는 간단한 방법

Rate  LowRange HighRange 
    --------------------------------------- 
    12.5  300000  0 
    15.5  1500000  300001 
    17.5  NULL  1500001 

어떤 아이디어를 가지고 있기 때문에 아래의 예는,

내가 속도 15.5를 선택, C#을 도움이 될 것

답변

2

@CuongLe가 가장 간단한 답변입니다.

할 것 MaxBy()라고 (원래 MoreLinq의 일부, 또는 또한 see here으로 존 소총에 의해 작성) Linq에에 좋은 확장이 있습니다 당신이 할 :

var max = list.MaxBy(item => item.LowRange); 

이 그것 때문에 훨씬 더 효율적입니다 OrderByDecending()O(N*Log(n))

+0

Thanks Matthew Watson and stackoverflow – gaganHR

2

할 수 있습니다 OrderByDescendingLowRange에를 First

list.OrderByDescending(x => x.LowRange).First(); 
+0

인 경우에만 O (N)입니다. 빠른 답장을 보내 주셔서 감사합니다. :) – gaganHR

관련 문제