2011-11-16 2 views
6

내 시나리오를 해결할 수있는 .NET 빌드 방법이 있습니까?다른 문자열로 헬퍼로 문자열 정렬

  1. 문자열 배열이 있습니다. ex. { "Mark", "Tom", "Mat", "Mary", "Peter" }
  2. 내가 문자열 도우미에게
  3. 내 배열 결과를 정렬로 문자열 "Ma"를 사용하는 것은 { "Mark", "Mary", "Mat", "Tom", "Peter" }

내가 쉬운 것입니다 이것을 해결하는 기능을 알고,하지만 I'am 관심은 방법이 존재한다.

추신. .NET 4.0 사용

+0

정렬해야하는 일치하는 색인이있는 문자열. 일치하는 문자열이없는 다른 문자열은 어떻습니까? 원하는 경우 모든 일치하는 문자열을 필터링하여 정렬하고 나머지 요소가있는 목록을 마지막으로 추가 할 수 있습니다. –

+0

다른 접두사를 원래의 상대적인 순서로 남겨 두면서 지정된 접두사와 일치하는 요소를 정렬하면 어떤 이점이 있습니까? 정렬 된 요소는 항상 처음부터 끝나나요? –

+0

숙제, 그렇다면 태그하십시오. –

답변

17

.Net 3.5 이상을 사용하는 경우 OrderByDescending 및Linq에서 10 가지 방법으로 원하는 것을 할 수 있습니다. 예 :

var ordered = strings.OrderByDescending(s => s.StartsWith("Ma")).ThenBy(s => s); 
+0

똑똑 : upvoted !! – Marco

+0

Thx exacly 내가 원했던 것 : – EOG

+0

이 사람의 linq-fu는 강하다. +1 – ddysart

1

그 방법은 존재하지 않는다고 생각합니다.

public static string[] Sort(this string[] list, string start) 
{ 
    List<string> l = new List<string>(); 
    l.AddRange(list.Where(p => p.StartsWith(start)).OrderBy(p => p)); 
    l.AddRange(list.Where(p => !p.StartsWith(start))); 
    // l.AddRange(list.Where(p => !p.StartsWith(start)).OrderByDescending(p => p)); 
    return l.ToArray(); 
} 
:이를 사용하여 문자열 요소를 주문하고 정렬되지 않은 다른 사람을 떠나해야하는 경우

public static string[] Sort(this string[] list, string start) 
{ 
    List<string> l = new List<string>(); 
    l.AddRange(list.Where(p => p.StartsWith(start)).OrderBy(p => p)); 
    l.AddRange(list.Where(p => !p.StartsWith(start)).OrderBy(p => p)); 
    return l.ToArray(); 
} 

그래서 당신이

string[] list = new string[] { "Mark", "Tom", "Mat", "Mary", "Peter" }; 
string[] ordered_list = list.Sort("Ma"); 

을 수행 할 수 있습니다
나는 이것으로 해결

관련 문제