2012-07-14 2 views
2

Razor Webgrid에 대한 사용자 지정 정렬을 구현하려고합니다. 특히, webgrid 자체에 나타나지 않는 열을 정렬하려고합니다.C# List Order By

ListOfMatching이 정렬되지 않는 이유를 파악하려고합니다. 어떤 아이디어라도 대단히 감사하겠습니다.

는 기본적으로 무료 부작용 당신에게 LINQ에서

 ResultsDisplayModel foo;  // MVVM class to be bound to the view 
             // List of Matching is bound to a webgrid 

// public List<ResultsModel> ListOfMatching { get; set; } 
// TotalDebt is in a base class of ResultsModel called Expenses 

     if (sort == "DebtBurden") 
     { 

      if (foo.bSortDirection) 
      { 
       foo.bSortDirection = false; 
       foo.ListOfMatching.OrderByDescending(x => x.TotalDebt); 
      } 
      else 
      { 
       foo.bSortDirection = true; 
       foo.ListOfMatching.OrderBy(x => x.TotalDebt); 
      } 
     } 

답변

6

확장 방법을 감사 (의미, 그들은 현재 위치에서 원래의 콜렉션을 수정하지 마십시오). 결과 집합을 새 변수에 할당하거나 이전 변수를 덮어 써야합니다.

foo.ListOfMatchingColleges = foo.ListOfMatchingColleges 
           .OrderBy(x => x.TotalDebt) 
           .ToList(); 
+0

정말 잘됐다! 고맙습니다 – Scooter

4

OrderBy 및 OrderByDescending은 목록을 수정하지 않지만 정렬 된 요소의 새 목록을 반환합니다. 귀하의 속성을 재 할당해야합니다 :

foo.ListOfMatchingColleges = foo.ListOfMatching.OrderByDescending(x => x.TotalDebt);