如何使用LINQ查找和显示字符串中最重复的单词?

时间:2014-07-09 03:14:53

标签: c# linq

  String ss = "lijo is lijom is lijo fdf"; //here two words "is" and "lijo" is repeating two times so my output will be 
                          output   : lijo 
                                      is

我试过像这样

 var count=words.GroupBy(g=>g).Max(k=>k.Count());
//finding the max repeating elements count =2


 var res = words.GroupBy(s => s).Where(g => g.Count() == count).Select(s => s);

这里我试过首先找到重复单词的最大数量。并在另一个查询中分配此值。

我需要知道我们是否可以将这两个查询一起编写为一个查询。作为子查询 如何以不同的方式做到这一点? 使用子查询或任何其他简单的方法?

2 个答案:

答案 0 :(得分:2)

群体超载可以很容易地给你你的数量。

String ss = "lijo is lijom is lijo fdf";
var words = ss.Split();
var query = words.GroupBy(
            word => word,
            (key, counts) => new
            {
                Word = key,
                Count = counts.Count()
            });

要完成此操作,我建议您使用MaxBy扩展程序。

答案 1 :(得分:0)

试试这个:

var l = words.GroupBy(x => x).Select(y => new{key = y.Key, count = y.Count()}).ToList();
var max = l.OrderByDescending(y=>y.count).First().count;
var result = l.Where(x => x.count == max).Select(y=>y.key);

l只需获得一对单词及其频率。 max是来自l的最大数量。 result会为您提供最高频率的字词。

Demo