(заголовки не включены в словарь):
Код: Выделить всё
(code) (names)
------------------------------
910235487 Diabetes, tumors, sugar sick, .....
Пользовательский ввод — ключевые слова (названия диагнозов), я не могу поиск по словарю по ключам.
Вот код:
Код: Выделить всё
var relevantIDs = this.dic.Where(ele => ele.Value.Contains(keyword))
.Select(n => Convert.ToUInt64(n.Key));
Я думаю, проблема в том, что для каждого значения пары я выполнил операцию Содержит, которая замедляет процесс who, но я не могу найти альтернативный способ сделать это...
Это то, что я сделал, чтобы найти совпадающие коды.
Но производительность этот код ужасен (на завершение этой единственной строки кода уходит около 5 минут).
Может ли кто-нибудь помочь?
Обновите и самое простое решение
Я наконец-то нашел сезон, почему поиск такой медленный, и решил эту проблему:
Код: Выделить всё
var relevantStringIDs = this.dic.Where(ele => ele.Value.Contains(keyword)).Tolist();
var relevantUlongIDs = relevantStringIDs.Select(n => Convert.ToUInt64(n.Key)).Tolist();
Пожалуйста, поправьте меня, если вы нашли в этом объяснении что-то не так.
Кстати, хотя это, возможно, и не лучшее решение, но производительность измененного кода низкая. тихо, удовлетворительно. Первый оператор кода занимает всего 169 мс, что для меня достаточно быстро.
Подробнее здесь: https://stackoverflow.com/questions/176 ... dictionary
Мобильная версия