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

本文关键字:单词 LINQ 何使用 查找 字符串 显示 | 更新日期: 2023-09-27 18:12:08

  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);

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

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

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

有一个过载组,可以很容易地给你你的计数。

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扩展。

试试这个:

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只得到单词对及其频率。maxl的最大计数。result将给出频率最高的单词。

演示