[英]Linq query for Row_Number() over (partition by multiple column order by)
[英]Solution for complex LINQ query with ROW_NUMBER() and PARTITION BY
這是我的第一個問題。 對於一項學校作業,我正在使用 Rider 在 ASP.net MVC 中編寫一個程序。 這將是電影網絡應用程序。 查詢得到當前各廳正在播放的節目。 因此,對於 6 個大廳,我有 6 個 ID,所有 ID 都應該返回給我:
我構建的代碼是這樣的,它在我的查詢控制台中工作:
SELECT "HallId", "Title", "StartAt"
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY "HallId" ORDER BY "StartAt") rn
FROM "Showtime" where "StartAt"::time < now()::time) x
JOIN "Movie" M ON "MovieId" = M."Id"
WHERE x.rn = 1
ORDER BY "HallId"
為此我需要一個 LINQ 查詢,但我無法讓它工作。 順便說一下,我使用 Postgres。 這就是為什么“”。 有人對我有答案嗎?
您的問題對列名稱不夠清楚,但您可以使用與以下 linq 查詢相同的內容
var result =
(from s in dbentities.Showtime
join r in dbEntities.Movie on s.Mid equals r.Mid
where s.StartAt < DateTime.Now && r.rn == 1).ToList();
這是我的解決方案:
經過長時間的搜索,我找到了下一個(神奇的)解決方案。 對我來說就像地獄一樣工作:
public IEnumerable<Showtime> MovieNext(){
return _context.Showtime
.FromSqlRaw("SELECT tbl.* FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY "HallId" ORDER BY "StartAt") row
FROM myDb."Showtime"
WHERE "StartAt" > now()) tbl
JOIN myDb."Movie" M ON "MovieId" = M."Id"
WHERE tbl.row = 1 ORDER BY "HallId"");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.