我有Dictionary<string, object>
字典。它曾经是,Dictionary<Guid, object>
但是其他“标识符”已经发挥作用,并且现在将键作为字符串处理。
问题是Guid
来自我的源数据的键是VarChar
,所以现在的键"923D81A0-7B71-438d-8160-A524EA7EFA5E"
与"923d81a0-7b71-438d-8160-a524ea7efa5e"
(与Guids时不是问题)不同。
.NET框架的真正优点(也是很好的方面)是我可以这样做:
Dictionary<string, CustomClass> _recordSet = new Dictionary<string, CustomClass>(
StringComparer.InvariantCultureIgnoreCase);
而且效果很好。但是嵌套字典呢?如下所示:
Dictionary<int, Dictionary<string, CustomClass>> _customRecordSet
= new Dictionary<int, Dictionary<string, CustomClass>>();
我如何在这样的嵌套字典上指定字符串比较器?
StringComparer.InvariantCultureIgnoreCase
。该比较器很慢,因为它将使用字符类比较字符串以克服跨文化差异。这意味着该单词Straße
将被视为等于,Strasse
反之亦然。我假设您不希望出现这种情况,并且如果性能至关重要(如果您正在数据库上实现缓存层之类的功能),那么使用会更好StringComparer.OrdinalIgnoreCase
。顺序比较器是.NET框架可以提供的最快的字符串比较器。