Если у меня Dictionary<String,...>
есть, можно ли сделать такие методы, как ContainsKey
без учета регистра?
Это казалось связанным, но я не понял его правильно: c # Dictionary: создание ключа без учета регистра с помощью объявлений
c#
collections
generic-collections
Мистер Бой
источник
источник
StringComparer.InvariantCultureIgnoreCase
? Он делает то, что говорит ...Ответы:
Это действительно связано. Решение состоит в том, чтобы сказать экземпляру словаря не использовать стандартный метод сравнения строк (который чувствителен к регистру), а использовать регистронезависимый. Это делается с помощью соответствующего конструктора :
Конструктор ожидает,
IEqualityComparer
что словарь говорит, как сравнивать ключи.StringComparer.InvariantCultureIgnoreCase
дает вамIEqualityComparer
экземпляр, который сравнивает строки без учета регистра.источник
источник
Есть немного шансов, когда ваше дело со словарем, который извлекается из сторонних или внешних DLL. Используя linq
YourDictionary.Any(i => i.KeyName.ToLower().Contains("yourstring")))
источник
Any
кSingleOrDefault
вам не получитеnull
обратно , если он не существует, вместо этого вы получите KeyValuePair как с ключом и устанавливающимnull
!Contains
Похоже, это очень специфический вариант использования того, над чем вы работали в то время. Как более общий полезный ответ, я думаю, чтоEquals
лучше. И на этой же ноте вместо дублирования строкиToLower()
было бы лучше использоватьStringComparison.xxxCase
.dict.Keys.Contains("bla", appropriate comparer)
деталей ) используйте перегрузку LINQ для простоты использования.Я просто столкнулся с такой же проблемой, когда мне понадобился регистр символов в контроллере ASP.NET Core.
Я написал метод расширения, который делает свое дело. Может быть, это может быть полезно и для других ...
Чтобы использовать метод расширения:
Затем получите значение из словаря с помощью:
источник
Если у вас нет контроля при создании экземпляра, скажем, ваш объект удален от json и т. Д., Вы можете создать класс-оболочку, который наследуется от словарного класса.
источник