[英]Read from a file and count the words in a list
我正在使用C#读取csv文件,并将所有单词吐在换行符中。 然后,我想计算该文件中每个单词在列表中重复的次数。 我得到的输出不算单词。 请参阅以下信息
csv文件内容:她很好,他可以很好哦,哇,太好了
这是代码:
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
var list = File.ReadAllLines("Try3.csv");
foreach (string line in File.ReadAllLines("Try3.csv"))
{
string[] parts = line.Split(' ');
foreach (string part in parts)
{
var q = list.GroupBy(x => x)
.Select(g => new {Value = g.Key, Count = g.Count()})
.OrderByDescending(x=>x.Count);
foreach (var x in q){
Console.WriteLine("{0}",part+" Count:"+ x.Count);
}
}
}
}
}
这是我得到的输出:
[ ]
有什么想法吗?
尝试这个
var results = File.ReadLines("Try3.cvs")
.SelectMany(line => line.Split(' '))
.GrooupBy(word => word)
.ToDictionary(g => g.Key, g => g.Count());
首先使用File.ReadLines
将意味着您一次只能读取一行,而不是在处理之前将整个文件加载到内存中。 如果文件很大,这将很有帮助。 然后,将行拆分成单词,然后对这些单词进行分组,以创建一个字典,该字典将在关键字处包含单词并将其在文件中显示的次数作为值,这只是一个简单的问题。
为了按计数顺序获得结果,您可以选择执行以下操作。
var results = File.ReadLines("Try3.cvs")
.SelectMany(line => line.Split(' '))
.GrooupBy(word => word)
.OrderByDescending(g => g.Count())
.Select(g => new { Word = g.Key, Count = g.Count() })
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.