В списке есть метод Sort, который принимает объект сравнения в качестве входных данных.
Сначала вы определяете сравнение:
public class PerimeterComparer: IComparer<Circle>
{
public int Compare(Circle x, Circle y)
{
if(x.Perimeter() > y.Perimeter()) { return -1; }
if(x.Perimeter() < y.Perimeter()) { return 1; }
return 0;
}
}
Затем вызываете метод сортировки:
lst.Sort(new PerimeterComparer());