如何使用LINQ进行分组,然后获取最大组的值

Sli*_* A. 7 c# linq

这是我到目前为止所拥有的:

  var bestReason =
   from p in successfulReasons
   group p by p.Reason into g
   select new { Excuse = g.Key, ExcuseCount = g.Count() };
Run Code Online (Sandbox Code Playgroud)

我现在需要做的是回归一个原因,这是最好的原因,在过去确定哪个是成功的.

样本数据:

ID,Reason
---------
0,Weather
1,Traffic
2,Illness
3,Weather
4,Traffic
5,Traffic
6,Pirates
Run Code Online (Sandbox Code Playgroud)

应该返回"交通"

如果可能的话,想在一个LINQ语句中完成所有操作.

谢谢.

编辑:如果有7次海盗袭击和7次交通事故,我可以返回任何一个(按字母顺序排在第一位).

Lee*_*Lee 13

var bestReason = successfulReasons
    .GroupBy(r => r.Reason)
    .OrderByDescending(grp => grp.Count())
    .First().Key;
Run Code Online (Sandbox Code Playgroud)