У меня есть привязанный datagridview с около 1/2 миллионами записей и может быть отсортирован по любому столбцу. В GUI пользователь может выбрать любое количество строк (иногда все они с CTRL + A). Из другого источника я получаю большой список идентификаторов записей (до 1000) и должен выяснить, какой из этих идентификаторов соответствует выбранной строке. Я пробовал много подходов, ни один из которых не выполнялся достаточно быстро. Например:быстрый способ найти состояние выбора строки в datagridview
Невозможно заполнить выбранную коллекцию строк и найти совпадение в списке идентификаторов, потому что счетчик SelectedRows может быть порядка 1/2 миллиона.
Я также пробовал прокручивать список идентификаторов (как правило, порядка 1000), и для каждого идентификатора используется BindingSource.Find («Id», Value), который дает мне индекс строки для каждого ID, и я могу затем проверьте, выбрана ли строка. Это отлично работает, если сетка сортируется по идентификатору, но если это не так, производительность Find() слишком бедна, чтобы называться 1000 раз.
Короче говоря, мне нужен быстрый способ найти Row.Selected состояние для 1000 строк с учетом идентификаторов объектов строки. Кажется, DataGridView или DataBinding должны иметь возможность справиться с этим, но это не очевидно. Заранее спасибо!
Только непроверенный комментарий. Привяжите выбранное свойство и затем выполните поиск по данным. – Paparazzi