c#中如何用list对文本文件中的词语按行去重并统计每个词语的次数

问题1:“文本1”中按行存放词语,不但要去重,还要把所有词语出现的次数统计出来,结果如“文本2”。问题2:针对“文本2”按照词语次数的大小降序排列,结果如“文本3”。... 问题1:“文本1”中按行存放词语,不但要去重,还要把所有词语出现的次数统计出来,结果如“文本2”。
问题2:针对“文本2”按照词语次数的大小降序排列,结果如“文本3”。
展开
 我来答
freeeeeewind
2014-10-16 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1353万
展开全部

这样的问题用Linq处理非常方便!

1)代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //从文本文件中读出所有行
            string[] lines = File.ReadAllLines("文本1.txt");
            //构造一个Linq查询
            var qry = from s in lines
                      group s by s into ws
                      orderby ws.Count() descending
                      select new
                      {
                          Num= ws.Count(),
                          Word = ws.Key
                      };

            //将结果写入文件
            StreamWriter w = File.CreateText("文本3.txt");
            foreach (var item in qry)
            {
                w.WriteLine(string.Format("{0} {1}", item.Word, item.Num));    
            }
            w.Close();
        }
    }
}

2)文本1.txt的内容


3)文本3.txt的内容(运行结果)

追问

非常感谢。您这个是用了SQL查询方面的语句吗,

这个方面没接触过,不是很懂。另外就是,在一个文件夹下如果有很多类似的“文本1”需要进行处理(也就是说批处理),这个怎么实现。还有能够不用那个查询语句实现吗。麻烦大神附上代码,谢谢。

elfinmanc
2014-10-16 · 超过31用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:37.2万
展开全部
给你个思路
用StreamReader 读入内存,然后定义语句变量

用 while ((line = sr.ReadLine()) != null)一行一行读入
然后相同变量相加。最后统计出来后写入
list中,代码不放了,自己想
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tonalilili
2014-10-16 · TA获得超过1.6万个赞
知道大有可为答主
回答量:8050
采纳率:71%
帮助的人:3081万
展开全部
不需要用到list吧。
直接逐行读取出来就是 字符串数组 了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式