Ich habe ein Dictionary<string, object>
Wörterbuch. Früher war es so, Dictionary<Guid, object>
aber andere 'Bezeichner' sind ins Spiel gekommen und die Schlüssel werden jetzt als Zeichenfolgen behandelt.
Das Problem ist, dass die Guid
Schlüssel aus meinen Quelldaten als kommen VarChar
, so dass jetzt ein Schlüssel von "923D81A0-7B71-438d-8160-A524EA7EFA5E"
nicht der gleiche ist wie "923d81a0-7b71-438d-8160-a524ea7efa5e"
(war kein Problem bei der Verwendung von Guids).
Das wirklich Schöne (und Süße) am .NET Framework ist, dass ich Folgendes tun kann:
Dictionary<string, CustomClass> _recordSet = new Dictionary<string, CustomClass>(
StringComparer.InvariantCultureIgnoreCase);
Und das funktioniert super. Aber was ist mit einem verschachtelten Wörterbuch? Wie folgt:
Dictionary<int, Dictionary<string, CustomClass>> _customRecordSet
= new Dictionary<int, Dictionary<string, CustomClass>>();
Wie würde ich den Zeichenfolgenvergleicher in einem verschachtelten Wörterbuch wie diesem angeben?
StringComparer.InvariantCultureIgnoreCase
. Dieser Vergleich ist langsam, da er Zeichenfolgen mit Zeichenklassen vergleicht, um interkulturelle Unterschiede zu überwinden. Dies bedeutet, dass das WortStraße
als gleich behandelt wirdStrasse
und umgekehrt. Ich gehe davon aus, dass Sie ein solches Verhalten nicht möchten und wenn die Leistung entscheidend ist (wenn Sie so etwas wie eine Cache-Schicht über einer Datenbank implementieren), ist es besser, wenn Sie diese verwendenStringComparer.OrdinalIgnoreCase
. Der Ordnungsvergleicher ist der schnellste Zeichenfolgenvergleicher, den das .NET Framework bieten kann.