如何将PostgreSQL查询转换为LINQ或lambda表达式



我有一个PostgreSQL查询,我需要转换为Lamba exp或LINQ在我的ASP中使用。. NET Core c#项目。此外,表的名称为"deliveryfinances"。

这是我的PostgreSQL查询

SELECT t1."DriverId", t2."OrderNo", COUNT(*)
FROM public."DeliveryFinances" t1
JOIN
(
SELECT MIN("OrderNo") AS "OrderNo", "DriverId"
FROM public."DeliveryFinances"
GROUP BY "DriverId"
) t2 ON t1."DriverId" = t2."DriverId"
GROUP BY t1."DriverId", t2."OrderNo"
LIMIT 25

这是在pgAdmin

中运行查询后得到的结果
| DriverId| OrderNo | count |
|----------------------------
| 123123  | REQWFA  |      3|
| 345534  | ASDCA3  |      2|
| 565534  | MCJSL1  |      1|

我可以在lambda或LINQ中做到这一点吗?请帮帮我。

使用EF Core 5,一个直接的翻译似乎是可行的:

var qmin = from t2 in DeliveryFinances
group t2.OrderNo by t2.DriverId into dg
select new { OrderNo = dg.Min(), DriverId = dg.Key };
var q = from t1 in DeliveryFinances
join t2 in qmin on t1.DriverId equals t2.DriverId
group new { t1, t2 } by new { t1.DriverId, t2.OrderNo } into t1t2g
select new {
t1t2g.Key.DriverId,
t1t2g.Key.OrderNo,
Count = t1t2g.Count()
};
var ans = q.Take(25);

它在我的数据库上似乎不是特别有效,但几乎直接转化为你的SQL。

更好地查看您的数据可能会提供在查询中使用Group Join的方法,但它可能无法转换为SQL。

相关内容

  • 没有找到相关文章

最新更新