Sort ObservableCollection: ¿cuál es el mejor enfoque?

Tengo una ObservableCollection, donde MyData es una clase con 4 propiedades, es decir, int id, string name, bool IsSelected, string IsVisible.

Esta ObservableCollection está vinculada a un cuadro combinado con casillas de verificación (datos de ciudades, por ejemplo). Ahora, cuando el usuario marca las casillas de verificación, la próxima vez que abra el menú desplegable, todas las selecciones deben aparecer en orden ascendente por nombre.

También he implementado la función de autocompletar cuando el usuario escribe en 3 caracteres en el cuadro combinado, el menú desplegable se abrirá mostrando primero todas las selecciones, luego todos los elementos que comienzan desde los 3 caracteres ingresados por el usuario.

He investigado e implementado el siguiente código y está funcionando bien, pero quiero saber si este es el mejor enfoque o si puedo implementarlo de una mejor manera, el código es:

        IEnumerable<MyData> sort;
        ObservableCollection<MyData> tempSortedCities = new ObservableCollection<MyData>();
        sort = City.OrderByDescending(item => item.IsSelected).ThenBy(item => item.Name.ToUpper()) ; 
       // City is my observablecollection<MyData> property in my Model binded to combobox in UI
        foreach (var item in sort)
            tempSortedCities.Add(item);


        City.Clear(); // City is my observablecollection<MyData> property in my Model
        City = tempSortedCities;
        tempSortedCities = null;
        sort = null;  

Gracias de antemano por tu tiempo

Respuestas a la pregunta(1)

Su respuesta a la pregunta