Ich könnte notfalls den Enumerator-Getter überschreiben so dass die Liste vorher sortiert wird
Ein Enumerator ist per Definition nicht dafür gedacht in einer bestimmten Reihenfolge durch eine Datenmenge zu gehen. Das ist zwar meistens so implementiert, aber gedacht ist das so nicht, dass man sich darauf verlässt.
Dafür sollte immer ein indexbasierter Zugriff benutzt werden.
Ich selbst habe dafür schlicht ToArray überschrieben und gebe die Einträge dort sortiert zurück, wenn eine eigene Property SortedArray gesetzt ist.