Способ obj.Sort (делегат (...)); это динамическая сортировка в одном месте. Если у вас есть несколько мест, выполняющих одинаковую сортировку, или вам нужна более гибкая сортировка, вы можете создать класс, реализующий IComparer . Вот пример:
public class MyTypeComparer : IComparer<MyType>
{
public MyTypeComparer() // default comparer on ID
{ ... }
public MyTypeComparer(bool desc) // default with order specified
public MyTypeComparer(string sort, bool desc) // specified sort and order such as property name, true or false.
{ ... }
public int Compare(MyType a, MyType b) // implement IComparer interface
{ ... } // this is real sorting codes
}
и вот пример для его использования:
List<MyType> myList = GetList();
myList.Sort(new MyTypeComparer());
// myList.Sort(new MyTypeComparer(false));
// myList.Sort(new MyTypeComparer("FirstName", true));