小编Ken*_*ama的帖子

从字典中排除单词

我正在阅读文档,并拆分单词以获取字典中的每个单词,但我怎么能排除一些单词(如"/ a/an").

这是我的功能:

private void Splitter(string[] file)
{
    try
    {
        tempDict = file
            .SelectMany(i => File.ReadAllLines(i)
            .SelectMany(line => line.Split(new[] { ' ', ',', '.', '?', '!', }, StringSplitOptions.RemoveEmptyEntries))
            .AsParallel()
            .Distinct())
            .GroupBy(word => word)
            .ToDictionary(g => g.Key, g => g.Count());
    }
    catch (Exception ex)
    {
        Ex(ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,在这种情况下,在哪里添加.ToLower()调用以使文件中的所有单词都是小写的正确位置?在(temp = file..)之前我正在考虑这样的事情:

file.ToList().ConvertAll(d => d.ToLower());
Run Code Online (Sandbox Code Playgroud)

c# wpf dictionary tolower

7
推荐指数
1
解决办法
165
查看次数

将IEnumerable <string>转换为Dictionary

添加bool distinct到方法Splitter并检查distinct is true代码是否破坏后.问题现在而不是字典IEnumerable<string>,但是应该是Dictionary<string, int>.怎么可以解决?

这是错误:

无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.Generic.Dictionary'.存在显式转换(您是否错过了演员?)

和代码:

private Dictionary<string, int> Splitter(string[] file, bool distinct)
{
    var query = file
        .SelectMany(i => File.ReadLines(i)
        .SelectMany(line => line.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries))
        .AsParallel()
        .Select(word => word.ToLower())
        .Where(word => !StopWords.Contains(word))
        .Where(word => !StopWordsPl.Contains(word))
        .Where(word => !PopulatNetworkWords.Contains(word))
        .Where(word => !word.All(char.IsDigit)));
        if (distinct)
        {
        query = query.Distinct();
        }

       query.GroupBy(word => word)
            .ToDictionary(g => g.Key, g => g.Count());
       return query;
}
Run Code Online (Sandbox Code Playgroud)

c# ienumerable dictionary casting deferred-execution

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

在应用程序设置中保存字典并在启动时加载它

Dictionary<string, double>当我重新启动应用程序时,我已经保存并恢复它.据我所知,你不能在c#中存储字典,所以试图解决方法.

目前我已经在设置中调用了字符串变量DB,并试图使用这样的东西:

var settings = dict.ToArray();

var prop = Properties.Settings.Default.DB;
Run Code Online (Sandbox Code Playgroud)

做一些像 prop = settings;

到目前为止,我已经做到了这一点,虽然它现在正在工作..

private void SaveSettings()
{
    var settings = spamPercentage.ToArray();

    var prop = Properties.Settings.Default.DB;

    string res = String.Join(",", settings);

    prop = res;
}

private void LoadSettings()
{
    var prop = Properties.Settings.Default.DB;

    var dictionary = prop.ToDictionary(item => item.Key,
                               item => item.Value);
}
Run Code Online (Sandbox Code Playgroud)

编辑字典中的值如下所示:

{[john, 0,53]}
{[ivone, 0,44]}
etc.
Run Code Online (Sandbox Code Playgroud)

@edit使用Julien JSON的想法,我做了:

 string prop = Properties.Settings.Default.DB;
    private void SaveSettings()
    {

        prop = JsonConvert.SerializeObject(dict);
Properties.Settings.Default.Save();
    }

    private …
Run Code Online (Sandbox Code Playgroud)

c# wpf settings dictionary converter

2
推荐指数
1
解决办法
4427
查看次数