小编Sim*_*leV的帖子

SortedDictionary ArgumentException:"Æ"和"AE"被认为是相同的键

我试图使用SortedDictionary从文件中存储我的一些数据,但却得到了一堆奇怪的关键重复异常.我想出了下一个代码示例,它重现了我的问题:

var dict = new SortedDictionary<string, string>();
dict.Add("Æ", "qwerty"); // "aesc" (aka "ash"), single symbol
Console.WriteLine(dict["AE"]); // outputs "qwerty" for two-symbol string "AE"
dict.Add("AE", ""); // ArgumentException: An entry with the same key already exists.
Run Code Online (Sandbox Code Playgroud)

这个代码在.NET Fiddle上

虽然通常的词典没有发生,但我最终决定使用它.但我仍然想知道为什么它是一个排序的问题?不幸的是,我无法自己谷歌答案(得到很多与AES相关的噪音)并且无法调试到SortedDictionary的代码,尽管MS最近开放了一些.NET源代码.

这个类似乎隐含地运行了一些字符串预处理/规范化函数,但我简直不敢相信它是一个真正的原因.

任何想法为什么会发生?提前致谢!

.net c# dictionary unique sorteddictionary

4
推荐指数
1
解决办法
181
查看次数

MongoDB 索引异常的非 1 或 -1 值

我尝试使用创建索引

db.collection_name.createIndex({"field_name":1})
Run Code Online (Sandbox Code Playgroud)

然后当我打电话时getIndexes()它会给我以下结果

{
    "v" : 2,
    "key" : {
        "field_name" : 1.0
    },
    "name" : "field_name_1",
    "ns" : "dbname.collection_name"
}
Run Code Online (Sandbox Code Playgroud)

"field_name" : 1.0所以我想知道为什么现在是浮点数?是不是很糟糕?我还应该担心吗?有什么办法可以准确做到吗1

出于好奇:我注意到我什至可以成功地这样称呼它:

db.collection_name.createIndex({"another_field_name":12345})
Run Code Online (Sandbox Code Playgroud)

不会产生任何错误。我想知道这个案例中发生了什么。

mongodb

3
推荐指数
1
解决办法
2232
查看次数

标签 统计

.net ×1

c# ×1

dictionary ×1

mongodb ×1

sorteddictionary ×1

unique ×1