2009-05-08 3 views
0

У меня есть словарь под названием AvailableBoxes. Я хочу найти строку в этом словаре. Однако я хочу сравнить строчные буквы (и игнорировать специальные символы).Найти ключ в словаре, используя IEqualityComparer

я узнал, что я могу сделать следующее, чтобы знать, если ключ существует в словаре:

AvailableBoxes.Keys.Contains(CurrentBox.Name, new BoxNameEqualityComparer()) 

BoxNameEqualityComparer моя собственная Comparer, который реализует IEqualityComparer.

Но есть ли аналогичный способ найти индекс этого ключа?

ответ

1

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

AvailableBoxes.Keys.Contains(CUrrentBox.Name, StringComparer.OrdinalIgnoreCase); 

можно определить индекс конкретного ключа при просмотре коллекции Keys как упорядоченный список. Это плохое предположение. Потому что если вы добавите новый словарь в словарь, он может появиться в любом месте коллекции Keys.

Если вы действительно хотите заказать в своем словаре, я предлагаю вам использовать OrderedDictionary.

1

Посмотрите на использование одного из предопределенных в классе StringComparer.

Смежные вопросы