[英]Order by, distinct and select top 5 results with linq
大家好,我正在嘗試 select 來自數據庫的 5 條不同記錄,但我需要有序且不同。 我正在尋找最有效的方法。 問題是 Distinct() 方法打亂了排序,所以我試圖通過對它們進行分組來實現它,但似乎分組也打亂了排序。 也許有人會有一個好的解決方案?
這是我目前的嘗試。
public async Task<List<RecentProjectDto>> GetMostRecentProjects(int userId, int companyId)
{
using (var db = _dbFactory.Create())
{
var recentProjects = await db.ScheduleLogs
.OfType<WorkLog>()
.Where(x => x.UserId == userId)
.Where(x => x.User.CompanyId == companyId)
.OrderByDescending(x => x.End)
.GroupBy(x => new { x.ProjectId, x.Project.Name, x.Project.Key, x.Project.Colour })
.Select(x => new RecentProjectDto
{
ProjectId = x.ProjectId,
ProjectName = x.Project.Name,
ProjectKey = x.Project.Key,
Colour = x.Project.Colour
})
.Take(5)
.ToListAsync();
return recentProjects;
}
}
這樣的事情有用嗎?
var recentProjects = await db.ScheduleLogs
.OfType<WorkLog>()
.Where(x => x.UserId == userId)
.Where(x => x.User.CompanyId == companyId)
.GroupBy(x => new { x.ProjectId, x.Project.Name, x.Project.Key, x.Project.Colour })
.OrderByDescending(x => x.Max(a=>a.OrderDate))
.Select(x => new RecentProjectDto
{
ProjectId = x.Key.ProjectId,
ProjectName = x.Key.Name,
ProjectKey = x.Key.Key,
Colour = x.Key.Colour
})
.Take(5)
.ToListAsync();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.