usar todas solo sea que primera net minuscula mayusculas mayuscula letra hacer convertir como c# dictionary case-insensitive

todas - c#Dictionary: haciendo que la clave no distinga entre mayúsculas y minúsculas mediante declaraciones



solo mayuscula vb net (2)

Cuando agrega un elemento al diccionario externo, es probable que cree una nueva instancia del diccionario anidado, agréguelo en este momento, haciendo uso del constructor sobrecargado que toma un IEqualityComparer<TKey> .

_customRecordSet.Add(0, new Dictionary<string, CustomClass>(StringComparer.InvariantCultureIgnoreCase));

Actualización 08/03/2017: Anecdóticamente, leo en algún lugar (creo que en "Escribir código .NET de alto rendimiento") que StringComparer.OrdinalIgnoreCase es más eficiente cuando simplemente se quiere ignorar el caso de los personajes. Esto, sin embargo, es completamente infundado por mí, así que YMMV.

Tengo un Dictionary<string, object> . Solía ​​ser Dictionary<Guid, object> pero otros ''identificadores'' han entrado en juego y las Keys ahora se manejan como cadenas.

El problema es que las claves Guid de mis datos de origen vienen como VarChar , por lo que ahora una clave de "923D81A0-7B71-438d-8160-A524EA7EFA5E" no es lo mismo que "923d81a0-7b71-438d-8160-a524ea7efa5e" ( "923d81a0-7b71-438d-8160-a524ea7efa5e" no es un problema cuando se usan Guids).

Lo que es realmente agradable (y dulce) sobre el framework .NET es que puedo hacer esto:

Dictionary<string, CustomClass> _recordSet = new Dictionary<string, CustomClass>( StringComparer.InvariantCultureIgnoreCase);

Y eso funciona genial Pero, ¿qué pasa con un diccionario anidado? Como el siguiente:

Dictionary<int, Dictionary<string, CustomClass>> _customRecordSet = new Dictionary<int, Dictionary<string, CustomClass>>();

¿Cómo puedo especificar el comparador de cadenas en un diccionario anidado como este?


Tendrá que inicializar los diccionarios anidados para usarlos. Solo usa el código que tienes arriba en ese punto.

Básicamente, deberías tener un código como este:

public void insert(int int_key, string guid, CustomClass obj) { if (_customRecordSet.ContainsKey(int_key) _customRecordSet[int_key][guid] = obj; else { _customRecordSet[int_key] = new Dictionary<string, CustomClass> (StringComparer.InvariantCultureIgnoreCase); _customRecordSet[int_key][guid] = obj; } }