Comment puis-je faire une comparaison de chaînes insensible à la casse?

Comment puis-je rendre la ligne insensible à la casse?

drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username == (ssortingng)drUser["Username"]) != -1); 

On m’a donné des conseils plus tôt aujourd’hui pour suggérer que j’utilise:

 x.Username.Equals((ssortingng)drUser["Username"], SsortingngComparison.OrdinalIgnoreCase))); 

le problème est que je ne peux pas faire fonctionner ceci, j’ai essayé la ligne ci-dessous, cela comstack mais renvoie les mauvais résultats, il retourne les utilisateurs inscrits en tant qu’utilisateurs non inscrits et non inscrits comme inscrits.

 drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username.Equals((ssortingng)drUser["Username"], SsortingngComparison.OrdinalIgnoreCase))); 

Quelqu’un peut-il signaler le problème?

Ce n’est pas la meilleure pratique dans le framework .NET (4 & +) pour vérifier l’égalité

 Ssortingng.Compare(x.Username, (ssortingng)drUser["Username"], SsortingngComparison.OrdinalIgnoreCase) == 0 

Utilisez plutôt le suivant

 Ssortingng.Equals(x.Username, (ssortingng)drUser["Username"], SsortingngComparison.OrdinalIgnoreCase) 

MSDN recommande:

  • Utilisez une surcharge de la méthode Ssortingng.Equals pour tester si deux chaînes sont égales.
  • Utilisez les méthodes Ssortingng.Compare et Ssortingng.CompareTo pour sortinger les chaînes et non pour vérifier l’égalité .

Vous devez utiliser la fonction Ssortingng.Compare statique comme suit

 x => Ssortingng.Compare (x.Username, (ssortingng)drUser["Username"], SsortingngComparison.OrdinalIgnoreCase) == 0 

Veuillez utiliser ceci pour comparaison:

 ssortingng.Equals(a, b, SsortingngComparison.CurrentCultureIgnoreCase); 

Vous pouvez (bien que controversé) étendre System.Ssortingng pour fournir une méthode d’extension de comparaison insensible à la casse:

 public static bool CIEquals(this Ssortingng a, Ssortingng b) { return a.Equals(b, SsortingngComparison.CurrentCultureIgnoreCase); } 

et utiliser comme tel:

 x.Username.CIEquals((ssortingng)drUser["Username"]); 

C # vous permet de créer des méthodes d’extension pouvant servir de suggestion syntaxique dans votre projet, ce qui serait très utile, selon moi.

Ce n’est pas la réponse et je sais que cette question est ancienne et résolue, je voulais juste append ces bits.

Je pense que vous trouverez plus d’informations dans ce lien:

http://codeidol.com/community/dotnet/controlling-case-sensitivity-when-comparing-two-st/8873/

Utilisez la méthode statique Compare sur la classe Ssortingng pour comparer les deux chaînes. Le troisième paramètre de l’une de ses surcharges détermine si la comparaison est insensible à la casse. Par exemple:

 ssortingng lowerCase = "abc"; ssortingng upperCase = "AbC"; int caseInsensitiveResult = ssortingng.Compare(lowerCase, upperCase, SsortingngComparison.CurrentCultureIgnoreCase); int caseSensitiveResult = ssortingng.Compare(lowerCase, SsortingngComparison.CurrentCulture); 

La valeur caseSensitiveResult est -1 (ce qui signifie que la valeur inférieure de la couche est “inférieure à” la valeur supérieure) et que la valeur caseInsensitiveResult est égale à zéro (indiquant que la valeur inférieure “” est “supérieure).

D’autres répondent ici sont totalement valides, mais il faut un certain temps pour taper SsortingngComparison.OrdinalIgnoreCase et utiliser Ssortingng.Compare .

J’ai codé la méthode simple d’extension de Ssortingng, où vous pouvez spécifier si la comparaison est sensible à la casse ou si la casse est dépourvue de booléen, en attachant l’extrait de code entier ici:

 using System; ///  /// Ssortingng helpers. ///  public static class SsortingngExtensions { ///  /// Compares two ssortingngs, set ignoreCase to true to ignore case comparison ('A' == 'a') ///  public static bool CompareTo(this ssortingng strA, ssortingng strB, bool ignoreCase) { return Ssortingng.Compare(strA, strB, ignoreCase) == 0; } } 

Après cette comparaison, on réduit de 10 caractères environ – comparez:

Avant d’utiliser l’extension Ssortingng:

 Ssortingng.Compare(testFilename, testToStart,true) != 0 

Après avoir utilisé l’extension Ssortingng:

 testFilename.CompareTo(testToStart, true) 

Que diriez-vous d’utiliser SsortingngComparison.CurrentCultureIgnoreCase place?

vous pouvez toujours utiliser des fonctions: .ToLower (); .ToUpper ();

convertissez vos chaînes puis comparez-les …

Bonne chance