Фильтрация и сортировка WPF в наблюдаемой коллекции
Что у меня есть?
У меня есть пользовательский элемент управления с сеткой данных и текстовым полем для поиска в сетке данных. В моей модели представления у меня есть ObservableCollection с именем EmployeeCollection, который привязан к сетке данных. Рассмотрим следующее содержимое коллекции сотрудников.
Идентификатор электронной почты EmployeeName
Emp1 [email protected]
Эмп 2 [email protected]
Азбука [email protected]
Эта коллекция привязана к сетке данных, и все отображается правильно. И в модели представления я добавил следующий фильтр в представление коллекций по умолчанию для поиска коллекции с использованием ввода, предоставленного в текстовом поле. Чтобы отобразить точное совпадение, а также другие записи, начинающиеся с заданного текста поиска.
CollectionViewSource.GetDefaultView(EmployeeCollection).Filter =
x => (((EmployeeViewModel)x).Name.Equals(SearchText, StringComparison.CurrentCultureIgnoreCase) || ((EmployeeViewModel)x).Name.ToLower().StartsWith(SearchText.ToLower()));
Чего я ожидаю?
Теперь в текстовом поле поиска я набираю «Emp» и нажимаю на результаты поиска. В результате я ожидаю сначала отобразить точное совпадение, а затем отобразить частичное совпадение (начинается с данных) следующим образом.
Emp1 [email protected]
Эмп 2 [email protected]
Однако я не получаю его в ожидаемом порядке. Я получаю результат в том порядке, в котором данные хранятся в EmployeeCollection.
Emp1 [email protected]
Эмп 2 [email protected]
Теперь, как мне добиться сортировки сначала с точным совпадением, а затем с частичным совпадением?