代码之家  ›  专栏  ›  技术社区  ›  RBrook

如何利用C#(linq)生成困难的组?

  •  2
  • RBrook  · 技术社区  · 6 年前

    我在文字分析师方面有问题。 需要计算迭代中的单词数。txt文件 我做到了,但我需要把所有的计数放在一起,而不是在文件上分开。

    如何正确分组重写?

    var queryMatchingFiles =
                from file in files
                where file.Extension == ".txt"
                let fileText = File.ReadAllText(file.FullName)
                let matches = Regex.Matches(fileText, searchTerm)
                select new
                {
                    matchedValues = from Match match in matches
                                    group match by match.Value into grp
                                    select new {
                                        key = grp.Key, value = grp.Count()
                                    }
                };
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   arekzyla    6 年前

    您的查询应如下所示:

    var queryMatchingFiles =
                from file in files
                where file.Extension == ".txt"
                let fileText = File.ReadAllText(file.FullName)
                from match in Regex.Matches(fileText, searchTerm).Cast<Match>()
                group match by match.Value into grp
                select new
                {
                    key = grp.Key,
                    value = grp.Count()
                };
    

    创建 IEnumerable<Match> 从匹配中,您可以使用:

    Regex.Matches(fileText, searchTerm).Cast<Match>()
    

    所以您可以编写如下查询 from match in ...

    另一个强制转换选项是显式指定表达式中的类型:

    from Match match in Regex.Matches(fileText, searchTerm)