取n条记录进行聚合操作

3

我需要帮助构建一个Linq查询,以返回特定消息日志表中出现最多的用户名列表。

public class Log
{
  public string Username {get; set;}
  public string Message {get; set;}
}

我对消息为"Created User"、"Modified User"或"Deleted User"的行很感兴趣。

目前为止,我有:

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

我希望这个功能能够返回基于日志表中这些消息的条目数量的前5个用户名

1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接