Si j'ai un Dictionary<String,...>
est-il possible de créer des méthodes comme ContainsKey
sans distinction de casse?
Cela semblait lié, mais je ne le comprenais pas bien: Dictionnaire c #: rendre la clé insensible à la casse par les déclarations
Cela semblait lié, mais je ne le comprenais pas bien: Dictionnaire c #: rendre la clé insensible à la casse par les déclarations
C'est en effet lié. La solution consiste à indiquer à l'instance de dictionnaire de ne pas utiliser la méthode de comparaison de chaînes standard (sensible à la casse), mais plutôt d'utiliser une méthode sensible à la casse. Ceci est fait en utilisant le constructeur approprié :
var dict = new Dictionary<string, YourClass>(
StringComparer.InvariantCultureIgnoreCase);
Le constructeur attend un IEqualityComparer
qui indique au dictionnaire comment comparer les clés.
StringComparer.InvariantCultureIgnoreCase
vous donne une instance IEqualityComparer
qui compare les chaînes sans tenir compte de la casse.
var myDic = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
myDic.Add("HeLlo", "hi");
if (myDic.ContainsKey("hello"))
Console.WriteLine(myDic["hello"]);
Il y a peu de chances que votre dictionnaire soit tiré d'un fichier tiers ou d'une DLL externe. Utilisation de linq
YourDictionary.Any(i => i.KeyName.ToLower().Contains("yourstring")))