记录大多数记录

O.O*_*O.O 3 .net c# linq

我需要帮助构建一个linq查询,该查询将返回在特定消息的日志表中显示最多的用户名列表.

public class Log
{
  public string Username {get; set;}
  public string Message {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我对消息是"创建用户","已修改用户"或"已删除用户"的行感兴趣.

到目前为止,我有:

    public IQueryable<Log> GetTop5ActiveUsersByManagementMessages()
    {
        return this.ObjectContext.Logs
            .Where(w => w.Message == "Created User" || 
                   w.Message == "Removed User" || 
                   w.Message == "Updated User").Take(5);
    }
Run Code Online (Sandbox Code Playgroud)

我希望这可以根据日志表中这些消息的数量或条目返回前5个用户名.

use*_*116 5

使用分组来完成此任务:

this.ObjectContext.Logs
        .Where(w => w.Message == "Created User" || 
               w.Message == "Removed User" || 
               w.Message == "Updated User")
        .GroupBy(w => w.Username)
        .OrderByDescending(g => g.Count())
        .Select(g => g.Key)
        .Take(5);
Run Code Online (Sandbox Code Playgroud)