簡體   English   中英

我如何在 LINQ 中使用 SQL 內連接語句作為查詢

[英]How can i use SQL inner join statement as query in LINQ

SELECT
    Id,
    No,
    NetAmount,
    PaidAmount,
    NetAmount - PaidAmount AS AmountToBePayed
FROM
    (
        SELECT
            m.Id,
            m.No,
            SUM(NetAmount) as NetAmount,
            (
                SELECT
                    COALESCE( SUM( PaidAmount ), 0 )
                FROM
                    A_Account_Payable_Payment_Invoice
            ) as PaidAmount
        FROM
            A_Account_Payable_Invoice_M m
            INNER JOIN A_Account_Payable_Invoice_Item d ON
                m.Id = d.A_Account_Payable_Invoice
        GROUP BY
            m.Id,
            m.No
    ) a

如何直接在 LINQ C# 中使用此查詢

正如您在評論部分提到的,您不想將 SQL 轉換為 LINQ,您只想直接運行此腳本。

為此,您首先需要創建與您的腳本匹配的類,例如:

 [DataContract()]
 public class PaymentInvoiceResult
 {
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public int No { get; set; }

    [DataMember]
    public int NetAmount { get; set; }

    [DataMember]
    public int PaidAmount { get; set; }

    [DataMember]
    public int AmountToBePayed { get; set; }
 }

然后你需要使用SqlQuery如下:

List<PaymentInvoiceResult> paymentInvoiceResultList = db.Database.SqlQuery<PaymentInvoiceResult>("Your Script").ToList(); 

您可以簡單地使用:

var results = db.ExecuteQuery(typeof(DTO), "sql query ");

您的 dto 應該有成員:

Id,
    No,
    NetAmount,
    PaidAmount,
    NetAmount - PaidAmount AS AmountToBePayed

暫無
暫無

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

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