У меня есть случай использования, когда, учитывая огромный список строк и одно заданное c строковое значение, извлеченное из строки DataGridView
, содержащей те же элементы в том же порядке, мне нужно найти, если список содержит другой идентичный запись. Все существующие сообщения, которые я проверил, просто сообщают вам, если есть период дубликатов. Вот что у меня есть:
List<int> indexes = new List<int>{-1, originalRow.Index};
int foundIndex = CompleteScancodeList.IndexOf(originalRow.Cells[1].Value.ToString());
if (!indexes.Contains(foundIndex))
{
//Do something
}
Переменная originalRow
- это DataGridViewRow
, которая извлекается из итерации по каждой строке DataGridView
. Здесь я эффективно говорю: если индекс этого элемента в списке не равен -1 и не совпадает с индексом строки (следовательно, буквально тот же элемент).
Мне изначально удалось заставить его работать с вложенным l oop, но это было слишком медленно для моего вкуса. Как я могу заставить эту работу работать так, как я хочу, чтобы это условие оценивалось как истинное, только если данное строковое значение присутствует в списке строк, но по индексу, отличному от исходного?
Это работает, вроде как .. Работает только в том случае, если дублированный элемент находится перед исходным элементом в списке. Точно так же, если я использую метод LastIndexOf
, он работает, только если после дублированного элемента.