2014-07-07 2 views
0

검색하려고했지만 내 답을 찾을 수없는 것 같습니다. 내 생각에 드문 질문이 아니기 때문에 대답이있을 수 있습니다. 나는 Item1에 의한 정렬을 말하려고한다. 그들은 종류의 항목 2에 의해 동일한 경우람다 표현식, 항목 1 비교, 항목 2 비교

sorted.Sort((a,b)=>(a.Item1.CompareTo(b.Item1))); 
+0

[Multiple Order By By LINQ] (http : // stac kowflow.com/questions/2318885/multiple-order-by-with-linq) – JohnLBevan

답변

2

동안 는 이런 종류의 물건에 대한 구축 LINQ 사용하는 것이 훨씬 쉽게, List<T>.Sort이 작업을 수행 할 수있는 비교자를 구축 :

sorted = unsorted.OrderBy(x => x.Item1).ThenBy(x => x.Item2).ToList(); 

Sort를 실제로 사용하려는 경우 내 MiscUtil 프로젝트에 ProjectionEqualityComparer을 사용할 수 있지만 LINQ 방식만큼 좋지는 않습니다.

1
var sorted = original.OrderBy(c => c.Item1).ThenBy(n => n.Item2).ToList() 

당신이 비교 자 만들 수 있으며, LINQ 방법에 대한 대안으로이

+0

결과를 사용하지 않으므로 유용하지 않습니다. –

+0

이 너무 빨리 제출되었습니다. 고정 – TGH

+0

이것은 'List '이 아니기 때문에 OP가 예상 한 것일 수 있습니다. –

0

을 시도해보십시오 unsorted 가정,

class FrobComparer : IComparer<Frob> 
{ 
    public int Compare(Frob x, Frob y) 
    { 
     int item1Comparison = x.Item1.CompareTo(y.Item1); 

     if (item1Comparison == 0) 
      return x.Item2.CompareTo(y.Item2); 
     return item1Comparison; 
    } 
} 

을 그리고 Sort()에 그것을 통과하는 것은 List<Frob>입니다 :

var sorted = unsorted.Sort(new FrobComparer());