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"
}
我仍然希望最频繁的值为晴朗。但它变为空。知道如何在上面的列表中获得最常见的项目吗?
您可以使用波纹管获取最常用的项目
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();