小编bro*_*ing的帖子

C#:使用除英语之外的语言的字典的问题

好的,所以我基本上试图将每行包含1个单词的.txt文件的内容加载到字典中.

当这个文件中的单词是英文时,我没有遇到任何问题,但是将文件更改为带有重音的语言,我开始遇到问题.

必须在创建流阅读器时更改编码,还要在将单词添加到词典时使用ToLower方法中的文化.

基本上我现在有类似的东西:

if (!dict.ContainsKey(word.ToLower(culture)))
    dict.Add(word.ToLower(culture), true);
Run Code Online (Sandbox Code Playgroud)

问题是像"esta"和"está"这样的词被认为是相同的.那么,有没有办法将ContainsKey方法设置为特定语言,还是我们需要在类似的行中实现某些东西?无论哪种方式,我都是c#的新手,所以我想请一个例子.

另一个问题淹没了新文件...在一百个单词后,它停止添加文件的其余部分,留下一个单词不完整...但我不能在该单词中看到任何特殊的字符来结束方法的执行,任何关于这个问题的想法?

非常感谢.

编辑:使用Jon Skeet sugestion解决了第一个问题.

关于第二个问题:好的,将文件格式更改为UTF8并删除了流阅读器中的编码,因为它现在可以正确识别重音符号.现在测试关于第二个问题的一些东西.

第二个问题也解决了,这是我的一个错误......耻辱......

快速回答每个人的问题,特别是Jon Skeet.

c# dictionary

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

按值有效地对对<键,值>进行排序

我正在寻找一种最有效的方法来排序一堆pairs<string, float>按值,因为我需要获得大量对的3个最高条目.

我的自然反应是使用sortedList,但显然它只按键排序,我不能使用反向列表解决方案,因为我知道字符串是唯一的,但浮点数可能不是.

我忽略了任何简单有效的解决方案?

.net c# sorting performance

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

删除字典中低于指定值的所有条目的有效方法

我需要根据指定的下限删除字典中的所有条目.

我目前的解决方案是:

    List<string> keys = new List<string>();

    foreach (KeyValuePair<string, int> kvp in dic)
    {
        if (kvp.Value < lowerBound)
            keys.Add(kvp.Key);
    }

    foreach (string key in keys)
        dic.Remove(key);
Run Code Online (Sandbox Code Playgroud)

然而,这相当昂贵,特别是因为字典的大小相当大.

我见过LINQ解决方案,如:

foreach(var kvp in dic.Where(kvp.Value <= lowerBound).ToDictionary())
{
    dic.Remove(kvp.Key);
}
Run Code Online (Sandbox Code Playgroud)

我认为它更好,因为它只是一个foreach,但我得到:

当前上下文中不存在名称"kvp"

无法从用法中推断出方法'System.Linq.Enumerable.Where(System.Collections.Generic.IEnumerable,System.Func)'的类型参数.尝试显式指定类型参数.

我承认我对LINQ一无所知,所以任何想法如何使第二个解决方案工作,或更好的?

c# linq dictionary .net-3.5

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

意外问题复制词典

我的想法是在重置前一个的所有值时复制字典,所以我有这个指令:

var dic2 = new Dictionary<string, int>(dic.ToDictionary(kvp => kvp.Key, kvp => 0));
Run Code Online (Sandbox Code Playgroud)

但是我这样做有一个意想不到的问题,因为新复制的字典没有与前一个字典相同的键顺序.

有没有办法重置值但保持相同的键顺序?Witouth采取某种类型的排序?

c# dictionary copy .net-3.5

0
推荐指数
1
解决办法
94
查看次数

标签 统计

c# ×4

dictionary ×3

.net-3.5 ×2

.net ×1

copy ×1

linq ×1

performance ×1

sorting ×1