Class ObservableCollection - qual é a melhor abordagem?

Eu tenho um ObservableCollection, em que MyData é uma classe com 4 propriedades, ou seja, int id, nome da string, bool IsSelected, string IsVisibl

This ObservableCollection está vinculado a uma caixa de combinação com caixas de seleção (dados de cidades, por exemplo). Agora, quando o usuário marcar as caixas de seleção e, na próxima vez em que abrir o menu suspenso, todas as seleções deverão aparecer no topo em ordem crescente por nom

Também implementei o preenchimento automático quando o usuário digitar 3 caracteres na caixa de combinação; o menu suspenso será aberto, mostrando todas as seleções primeiro e, em seguida, todos os itens iniciados pelos 3 caracteres digitarão pelo usuári

Eu pesquisei e implementei o código a seguir e ele está funcionando bem, mas quero saber se essa é a melhor abordagem ou posso implementá-la de uma maneira melhor, o código é:

        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;  

Agradeço antecipadamente pelo seu tempo