我有一个包含名称的字符串数组,例如:
[Alex, Alex, Michael, Michael, Dave, Victor]
我转换为
List<string>
然后,我需要编写一个函数,该函数返回列表中最大重复项,但应按降序排序(在这种情况下为Michael)。
我遵循了此link中所述的LINQ代码。这是:
string maxRepeated = prod.GroupBy(s => s)
.OrderByDescending(s => s.Count())
.First().Key;
但是,代码返回的是Alex而不是Michael。
我尝试添加另一个
OrderByDescending
,但是它返回了Victor。string maxRepeated = prod.GroupBy(s => s)
.OrderByDescending(s => s.Count())
.OrderByDescending(b => b)
.First().Key;
我被困住了,不知道需要添加什么才能达到预期的效果。
任何帮助表示赞赏。
最佳答案
不是第二个OrderByDescending
,它忽略了先前的顺序,而是ThenByDescending
:
string maxRepeated = prod.GroupBy(s => s)
.OrderByDescending(g => g.Count())
.ThenByDescending(g => g.Key)
.First().Key;