2014-11-20 3 views
4

각기 이름이있는 개체 목록이 있습니다. 알파벳 순으로리스트를 정렬하려고하는데 (알파벳 순서대로), 문자 D로 시작하는 모든 항목을 알파벳 순으로 정렬 된리스트에 따라 정렬되게하고 싶습니다. 그래서 주어진 항목 : I는이 정렬알파벳순으로 알파벳순으로 목록 정렬

(Apple, Door, Banana, Doorknob, Gorilla, Hammer) 

싶습니다 :

(Apple, Banana, Gorilla, Hammer, Door, Doorknob) 

을 내가 사용하여이 무력을 처리 할 수있는 확신 해요,하지만 난 그것을 할 수있는 방법이 있었다 기대했다 linq와 OrderBy().ThenBy()하지만 2 개의 다른 속성을 정렬하기 위해 더 많은 것 같습니다. linq을 사용하여 수행 할 수있는 작업은 무엇입니까, 아니면 그냥 구식 방식으로 수행해야합니까?

답변

10

정렬 가능한 값을 정렬 순서로 반환하는 식을 사용할 수 있습니다. 그것은 재산 일 필요는 없습니다.

.OrderBy(o => o.Name.StartsWith("D") ? 1 : 0) 
.ThenBy(o => o.Name) 
+1

3 자 연산자를 제거하여 이름을 더 짧게 만들 수 있습니다. "false"는 "true"앞에 정렬됩니다. – gunr2171

+1

@ gunr2171 사실 그렇지만 직관적이지 않으므로 정렬 순서를 기억하는 것보다 분명하게 표현할 것입니다. –

+0

감사합니다. 정확히 내가 찾고있는 것입니다. – user1336827