C# 转换IEnumerable<;字符串>;查字典

C# 转换IEnumerable<;字符串>;查字典,c#,dictionary,casting,ienumerable,deferred-execution,C#,Dictionary,Casting,Ienumerable,Deferred Execution,将booldinctinct添加到方法拆分器并检查distinct是否为true后,代码中断。现在的问题不是字典而是IEnumerable,而是dictionary。怎么解决呢? 这就是错误: 无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.Dictionary”。存在显式转换(是否缺少强制转换?) 以及守则: private Dictionary<string, int> S

booldinctinct
添加到方法拆分器并检查
distinct是否为true后,代码中断。现在的问题不是字典而是
IEnumerable
,而是
dictionary
。怎么解决呢?

这就是错误:

无法将类型“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;
}
专用字典拆分器(字符串[]文件,bool distinct)
{
var query=file
.SelectMany(i=>File.ReadLines(i)
.SelectMany(line=>line.Split(新[]{''},StringSplitOptions.RemoveEmptyEntries))
.天冬酰胺()
.Select(word=>word.ToLower())
.Where(word=>!stopWord.Contains(word))
.Where(word=>!StopWordsPl.Contains(word))
.Where(word=>!popultNetworkwords.Contains(word))
.Where(word=>!word.All(char.IsDigit));
如果(不同)
{
query=query.Distinct();
}
query.GroupBy(word=>word)
.ToDictionary(g=>g.Key,g=>g.Count());
返回查询;
}

ToDictionary
返回您需要的内容。只需返回它,而不是返回
query

return query.GroupBy(word => word)
            .ToDictionary(g => g.Key, g => g.Count());

GroupBy和ToDictionary不修改底层对象,您可以在query=query.Distinct()上面的几行正确地修改它@尤瓦利扎科夫,我知道!值得指出的是,
distinct
代码现在只具有使这里的计数值始终
1
的效果。我发现这不太可能是有意的,也看不出
distinct
@Ken'ichiMatsuyama有什么用处。这里有一种更有效的方法:
.ToDictionary(g=>g.Key,g=>distinct?1:g.Count())。实际上,对计算机和人工代码阅读器来说,调用
Distinct
都是不必要的工作。