¿Cómo puedo hacer que la línea debajo de mayúsculas y minúsculas?
drUser["Enrolled"] = 
      (enrolledUsers.FindIndex(x => x.Username == (string)drUser["Username"]) != -1);
Hoy me dieron algunos consejos que sugirieron usar:
x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));el problema es que no puedo hacer que esto funcione, probé la línea a continuación, esto compila pero devuelve los resultados incorrectos, devuelve a los usuarios inscritos como no inscritos y usuarios no inscritos como inscritos.
drUser["Enrolled"] = 
      (enrolledUsers.FindIndex(x => x.Username.Equals((string)drUser["Username"], 
                                 StringComparison.OrdinalIgnoreCase)));
¿Alguien puede señalar el problema?

drUser["Enrolled"]ser? Parece un valor booleano, peroFindIndex()devuelve el índice. Si el índice de ese usuario es 0, devolverá 0, que puede ser falso. Cuando, en realidad es cierto. ElExists()método puede ser mejor en este caso.Respuestas:
Esta no es la mejor práctica en .NET Framework (4 y +) para verificar la igualdad
Use lo siguiente en su lugar
MSDN recomienda:
fuente
string.Compare, noString.Compare.stringes una mejor práctica queStringya que es una palabra clave de lenguaje. Por un lado,Stringpodría ser algo más queSystem.String, mientrasstringque no puede ser. Además,stringestá más o menos garantizado de existir en C #, mientrasStringque técnicamente es parte de .NET en lugar de C #.Debe usar la
String.Comparefunción estática como la siguientefuente
String.Equalslugar deString.Compare. No es necesario calcular cuál es mayor, solo que no son iguales.IEquatableyIComparableNO hagas lo mismo, y puedes tener clases que implementen una, pero en las cuales NO tendría sentido implementar la otra. Por ejemplo, puede ordenar muestras de sensores por tiempo sin que ninguno de ellos sea igual (IComparable). Y puede indicar si las cosas son iguales (IEquatable) pero no tiene sentido ordenarlas (por ejemplo, números de serie de la computadora).Utilice esto para comparar:
fuente
Las respuestas de otros son totalmente válidas aquí, pero de alguna manera lleva algún tiempo escribirlas
StringComparison.OrdinalIgnoreCasey también usarlasString.Compare.Codifiqué un método de extensión de cadena simple, donde podría especificar si la comparación distingue mayúsculas de minúsculas o mayúsculas y minúsculas con boolean, adjuntando el fragmento de código completo aquí:
Después de que toda la comparación se acorta en 10 caracteres aproximadamente, compare:
Antes de usar la extensión de cadena:
Después de usar la extensión de cadena:
fuente
Puede (aunque controvertido) extenderse
System.Stringpara proporcionar un método de extensión de comparación sin distinción entre mayúsculas y minúsculas:y usar como tal:
C # le permite crear métodos de extensión que pueden servir como sugerencia de sintaxis en su proyecto, bastante útil, diría yo.
No es la respuesta y sé que esta pregunta es antigua y está resuelta, solo quería agregar estos bits.
fuente
Creo que encontrará más información en este enlace:
http://codeidol.com/community/dotnet/controlling-case-sensitivity-when-comparing-two-st/8873/
Use el método Comparar estático en la clase Cadena para comparar las dos cadenas. El tercer parámetro de una de sus sobrecargas determina si la comparación no distingue entre mayúsculas y minúsculas. Por ejemplo:
El valor caseSensitiveResult es -1 (lo que indica que lowerCase es "menor que" upperCase) y caseInsensitiveResult es cero (lo que indica que lowerCase "es igual a" upperCase).
fuente
¿Qué hay de usar en su
StringComparison.CurrentCultureIgnoreCaselugar?fuente
Me gustaría escribir un método de extensión para EqualsIgnoreCase
fuente
siempre puedes usar funciones: .ToLower (); .ToUpper ();
convierte tus cadenas y luego compáralas ...
Buena suerte
fuente