C# 在字符串列表中查找出现最多的值

本文关键字:查找 字符串 列表 | 更新日期: 2023-09-27 18:33:39

>我有非常简单的列表,例如

List<string> mostFrequent = new List<string>()
{
   "Hot",
   "Sunny",
   "Windy",
   "Sunny",
   "Rainy"
}

如果我想在列表中查找出现次数最多的值,请使用以下代码。

var groupsWithCounts = from s in mostFrequent
group s by s into g
select new { 
    Item = g.Key, 
    Count = g.Count()
};
var groupsSorted = groupsWithCounts.OrderByDescending(g => g.Count);
string mostFrequest = groupsSorted.First().Item;

使用它,我在 mostFrequent 变量中得到最常见的值(Sunny)。但是,如果此列表的项目为空两次,则它将变为空。比如在这种情况下

List<string> mostFrequent = new List<string>()
{
   null,
   "Sunny",
   null,
   "Sunny",
   "Rainy"
}

我仍然希望最频繁的值为晴朗。但它变为空。知道如何在上面的列表中获得最常见的项目吗?

C# 在字符串列表中查找出现最多的值

您可以使用波纹管获取最常用的项目

var item = mostFrequent.Where(c => !string.IsNullOrEmpty(c)).GroupBy(a => a).OrderByDescending(b => b.Key[1].ToString()).First().Key;
var notnull = mostFrequent.Where(f=>f!=null);

这将去除所有空值

> 对不起:)没看过。这是遮阳篷。

var most = (from i in mostFrequent
                     where i != null
                    group i by i into grp
                    orderby grp.Count() descending
                    select grp.Key).First();

或者像这样的其他方式:

var most = mostFrequent.GroupBy(i => i).OrderByDescending(grp => grp.Count()).Select(grp => grp.Key).Where(x => x != null).First();