Самый быстрый способ поиска в коллекции строк



:



у меня есть текстовый файл примерно 120,000 пользователи (строки), которые я хотел бы сохранить в коллекции, а затем выполнить поиск по этой коллекции.



метод поиска будет происходить каждый раз, когда пользователь изменяет текст TextBox и результатом должны быть строки, которые содержат текст TextBox.



мне не нужно менять список, просто вытащите результаты и положите их в ListBox.



то, что я пробовал до сих пор:



Я пробовал с двумя разными коллекциями / контейнерами, которые я сбрасываю строковые записи из внешнего текстового файла (один раз, конечно):




  1. List<string> allUsers;

  2. HashSet<string> allUsers;


следующим LINQ запрос:



allUsers.Where(item => item.Contains(textBox_search.Text)).ToList();



мое событие поиска (срабатывает, когда пользователь изменяет поиск текст):



private void textBox_search_TextChanged(object sender, EventArgs e)
{
if (textBox_search.Text.Length > 2)
{
listBox_choices.DataSource = allUsers.Where(item => item.Contains(textBox_search.Text)).ToList();
}
else
{
listBox_choices.DataSource = null;
}
}


результаты:



оба дали мне плохое время отклика (около 1-3 секунд между каждым нажатием клавиши).



вопрос:



как вы думаете, где мое узкое место? Коллекция, которую я использовал? Метод поиска? Как?



как я могу получить лучшую производительность и более гибкую функциональность?

549   0  

Comments

    Ничего не найдено.