小编典典

我有一`Dictionary<string, object>`本字典。它曾经是,`Dictionary<Guid, object>`但其他“标识符”已经开始发挥作用,键现在作为字符串处理。 问题是`Guid`我的源数据中的键是`VarChar`,所以现在的键`"923D81A0-7B71-438d-8160-A524EA7EFA5E"`不一样`"923d81a0-7b71-438d-8160-a

all

我有一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>>();

我将如何在这样的嵌套字典上指定字符串比较器?


阅读 61

收藏
2022-07-12

共1个答案

小编典典

当您将元素添加到外部字典时,您可能会创建嵌套字典的新实例,在此时添加它,使用采用IEqualityComparer<TKey>.

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

2017 年 8 月 3日更新:有趣的是,我在某处读到(我认为在“编写高性能 .NET 代码”中),StringComparer.OrdinalIgnoreCase当只是想忽略字符的大小写时效率更高。然而,这完全是我自己没有根据的,所以YMMV。

2022-07-12