我的列表非常简单,如
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的项为null两次,则它变为null。比如在这种情况下
List<string> mostFrequent = new List<string>()
{
null,
"Sunny",
null,
"Sunny",
"Rainy"
}
我仍然希望将最常见的价值视为Sunny。但它变得无效。知道如何在上面的列表中获得最频繁的项目?
答案 0 :(得分:2)
var notnull = mostFrequent.Where(f=>f!=null);
这将删除所有空值
答案 1 :(得分:2)
您可以使用以下方式获取最频繁的项目
var item = mostFrequent.Where(c => !string.IsNullOrEmpty(c)).GroupBy(a => a).OrderByDescending(b => b.Key[1].ToString()).First().Key;
答案 2 :(得分:0)
抱歉:)没有读过它。 这是awnser。
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();