text: Q:
  
  Сортировка списка
  
  Класс точка
  public class Point
  {
      public int X { get; set; }
      public int Y { get; set; }
  
      public int distanse()
      {
          return this.X * this.X + this.Y * this.Y;
      }
  }
  
  и список точек
  List<Point> points;
  
  Как сортировать points по distanse?
  
  A:
  
  Твой класс должен реализовывать интерфейс IComparable, то есть:
  public class Point : IComparable<Point>
  {    
      public int X { get; set; }
      public int Y { get; set; }
  
      public int distanse()
      {
          return this.X * this.X + this.Y * this.Y;
      }
  
      // Реализация интерфейса
      public int CompareTo(Point p)
      {
          return this.distanse() - p.distance();
      }    
  }
  
  Если сортировка в коде используется единожды, можно воспользоваться анонимным делегатом, без модифицирования класса: 
  List <Point> points = new List <Point>();
  points.Sort( delegate(Point p1, Point p2){ return p1.distanse() - p2.distanse(); } );
  
  Подробнее читай в MSDN
  
  A:
  
  Используя LINQ (не меняя класс):
  List<Point> sorted = points.OrderBy(p => p.distanse()).ToList();
  
  A:
  
  Если не хочешь менять свой класс, тожно cделать так:
  public class PointComparer : IComparer<Point> {
      public int Compare(Point a, Point b) {
          return a.distanse() - b.distanse();
      }
  }
  
  а сортировать так:
  points.Sort(new PointComparer());
  
  