簡體   English   中英

如何從 PostgreSQL 查詢轉換為 LINQ 或 lambda 表達式

[英]How to convert from PostgreSQL query to LINQ or lambda expression

我有一個 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM