Предположим, есть коллекция вида List<string>, в ней очень большое число записей. Пользователь должен начинать вводить слово, а программа должна фильтровать список по введенным пользователем символам (от двух символов). То есть нужно быстро находить все значения из списка, которые содержат введенную пользователем подстроку. Можно это все фильтровать с помощью Where и Contains (или IndexOf), но есть мнение, что на больших размерах коллекции это будет работать не очень шустро.
Есть какой-то способ ускорить поиск?
Можно создать такую структуру: Dictionary<string, List<string>>
При добавлении новой записи нужно выполнить такой код:
foreach (string substr in GetAllPossibleSubstrings(stringToByAdded))
dictionary[substr].Add(stringToByAdded);
Где GetAllPossibleSubstrings ищет все возможные подстроки начиная с длины 2 (для вашего случая). В итоге поиск будет выполнятся за O(1):
List<string> searchResults = dictionary[searchQuery];
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости