2008-10-07 3 views

답변

11

에서 당신은 List.Sort()를 사용할 수 있습니다

ApprovalEvents.Sort((lhs, rhs) => (lhs.EventDate.CompareTo(rhs.EventDate))); 
+0

ApprovalEvents.Sort ((lhs, rhs) => lhs.EventDate.CompareTo (rhs.EventDate)); 더 나은 작동 ... –

+0

이 작동 ApprovalEvents.Sort ((lhs, rhs) => (lhs.EventDate.CompareTo (rhs.EventDate)))); –

+0

수정 권한이있는 사람이 위의 답변을 수정해야합니다 ... – TheSoftwareJedi

-1

병합 정렬은 목록에 매우 적합합니다. 자세한 내용은 WikiPedia entry을 참조하십시오. 기본적으로 임의 액세스가 필요하지 않은 재귀 n-Log n 정렬입니다.

특정 데이터 형식의 경우 pigeon holing을 사용하여 더 많은 메모리 사용을 희생시키면서 순서 n을 얻을 수도 있습니다.

5
using System.Linq; 

void List<ApprovalEventDto> sort(List<ApprovalEventDto> list) 
{ return list.OrderBy(x => x.EventDate).ToList(); 
} 
+0

은하지 않습니다 실제로 지정된 것을하십시오 - 목록을 정렬하지 않으면 목록에 정렬 ​​된보기를 반환합니다. 물론 충분히 좋을 수도 있습니다. 그러나 우리는 실제로 알지 못합니다. OP가 목록을 원하는 위치에 정렬하려면 List.Sort가 필요합니다. –

+0

여전히 목록을 정렬하며 그대로는 아닙니다. –

+0

"sort"라는 단어로 이해하는 것이 중요합니다. OrderBy는 데이터 소스를 전혀 수정하지 않지만 누군가가 콜렉션을 정렬하기를 원한다고 말하면 실제 콜렉션을 재정렬하기를 원한다는 의미로 사용합니다. 내가 전에 말했듯이, OP가 무엇을 필요로하는지는 불분명하다. –

-1

익명 메서드 또는 람다 식으로 List.Sort() 메서드를 사용할 수 있습니다. 다음과 같이 더 MSDN

3
ApprovalEvents.Sort((x, y) => { return x.EventDate.CompareTo(y.EventDate); }); 
+0

코드를 올바르게 형식을 지정하십시오. – Spoike

+1

"새로운 비교"부분은 필요하지 않습니다. 형식 유추가 도움이 될 것입니다. (DarkSider의 답변을 참조하십시오.) –

1

당신이 현재 위치에서 정렬이 필요하지 않은 경우, 당신은 .NET 3.5을 사용하고, 나는 Marxidad가 제안한대로 OrderBy를 사용할 것이다. 기존 목록을 정렬해야하는 경우 List.Sort를 사용하십시오.

List.Sort는 비교 대리자 또는 IComparer 중 하나를 사용할 수 있습니다. 둘 중 하나를 선택하면 작업이 간단 해집니다.

MiscUtil 프로젝트에는 두 개의 매개 변수를 사용하고 CompareTo를 직접 호출하지 않고도 (OrderBy에서와 마찬가지로) 정렬 키를 지정할 수있는 ProjectionComparer가 있습니다. 나는 개인적으로 읽기 쉽다는 것을 알지만, 물론 그것은 당신에게 달린 것입니다. Darksiders 솔루션처럼

0

(..이 반전과 MiscUtil에서 비교를 결합하는 간단한 방법 예는 단위 테스트를 참조하십시오 또한),하지만 난 아닌 비밀을 유지하는 것을 선호 :

ApprovalEvents.Sort((a, b) => (a.EventDate.CompareTo(b.EventDate))); 
관련 문제