所以我一直在嘗試執行查詢一段時間。這是查詢:
WITH ranked_loggings AS(
SELECT m.*, ROW_NUMBER() OVER(PARTITION BY proportioning_dbid ORDER BY logging_dbid DESC) AS rn
FROM logging AS m )
SELECT* FROM ranked_loggings WHERE rn = 1;
我嘗試了許多解決方案,例如http://www.sqltolinq.com/和http://www.linqpad.net/。不幸的是,據我所知,這些不支持 PostgreSQL。現在我嘗試執行原始查詢。現在我無法得到結果,我的應用程式不斷崩潰。有人可以指出我正確的方向還是我在這里完全錯過了什么?
uj5u.com熱心網友回復:
EF Core 應該從此 LINQ 查詢生成所需的結果:
var loggings = context.Loggings;
var query =
from d in loggings.Select(m => new { m.proportioning_dbid }).Distinct()
from m in loggings
.Where(m => m.proportioning_dbid == d.proportioning_dbid)
.OrderByDescending(m => m.logging_dbid)
.Take(1)
select m;
uj5u.com熱心網友回復:
弄清楚了。顯然不可能使用沒有引數的原始 SQL。像這樣解決它:
using (var context = new AmadeusDBContext())
{
ICollection<Logging> loggings = context.Loggings
.FromSqlRaw("WITH ranked_loggings AS( "
"SELECT m.*, ROW_NUMBER() OVER(PARTITION BY proportioning_dbid ORDER BY logging_dbid DESC) AS rn "
"FROM logging AS m ) "
"SELECT* FROM ranked_loggings WHERE rn = 1;", new NpgsqlParameter("@parameterrequired", 01))
.ToList<Logging>();
return loggings;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/453233.html
標籤:sql PostgreSQL 实体框架 林克
上一篇:LINQC#FirstOrDefault()查詢為現有元素回傳null
下一篇:將此sql查詢轉換為LINQ查詢
