簡體   English   中英

用聚合取 n 最多的記錄

[英]Take n most records with aggregate

我需要幫助構建一個 linq 查詢,該查詢將返回在特定消息的日志表中顯示最多的用戶名列表。

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

我對消息為“已創建用戶”、“已修改用戶”或“已刪除用戶”的行感興趣。

到目前為止,我有:

    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 個用戶名

使用分組來完成此任務:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM