我有一个包含名称的字符串数组,例如:

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

10-06 13:48