c# - 如何从 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。
推荐阅读
- asp.net-core-mvc - 从表单中获取所有值
- python - Pycuda 2019.1,如何正确复制一个gpuarray?
- sql - 即使所有其他人都没有返回数据,也显示第一列
- c++ - 模型更新时的 QML ListView 默认行为
- python - 如何从散景中的 x 轴的开始和结束删除日期?
- php - Bash 到 php 正则表达式
- reactjs - Can I subscribe to this.props.navigation.state.params?
- zalenium - 使用 testingbot,无法在 zalenkum 仪表板获取视频
- c# - 为什么 Control.ResetBindings() 会清除控件的 DataBindings?
- javascript - 使用 Redux Saga 并行获取数据