【问题标题】:LINQ query from SQL来自 SQL 的 LINQ 查询
【发布时间】:2021-09-27 07:09:34
【问题描述】:

我正在使用实体框架开发一个 ASP .NET WEB API。我有一个必须在 LINQ 中重写的 SQL 代码,我尝试了不同的方法,但都没有奏效。代码如下:

SELECT 
    Debit, Credit, 
    (SELECT SUM(q.debit - q.Credit) 
     FROM Qry013 q 
     WHERE q.AccountGuide = 'D23265D8-E39A-4AF0-B652-0608FA61A866' 
       AND q.EntryNumber <= qry013.EntryNumber 
       AND q.ID <= qry013.ID) AS balance, 
    ISNULL(Entryname, InvoiceName) AS source,  
    ISNULL(EntryNumber, BillNumber) ASTransactionNumber,
    TBL001.CurrencyShortcut AS CurrencyName,
    Qry013.Rate, CostCenterName, BranchName, 
    EntryNote 
FROM
    Qry013 
INNER JOIN 
    TBL001 ON TBL001.CardGuide = Qry013.CurrencyGuide 
WHERE
    AccountGuide = 'D23265D8-E39A-4AF0-B652-0608FA61A866' 
    AND Posted = 1

一切似乎都很简单,但有一个带有 SUM 操作的嵌套 SELECT 的那部分。非常感谢您的帮助

【问题讨论】:

  • 谢谢@mark_s,我还是stackoverflow的新手
  • 您不需要将所有内容都转换为 Linq。在 EF 中,您还可以在实体和数据库级别执行原始 sql 选择。检查docs.microsoft.com/en-us/ef/core/querying/raw-sql
  • @CetinBasoz 我尝试了类似的方法,但出现以下错误('数据读取器与指定的'XtrDBModel.Qry013'不兼容。类型的成员'ID'没有数据读取器中具有相同名称的相应列。')
  • @CetinBasoz 这是我尝试过的代码:(var result = DBContext.Qry013.SqlQuery(@"my query went here").ToList();)
  • 尝试创建一个 DTO 实体类并将查询输出映射到该实体类。例如:(var result = DBContext.Qry013.SqlQuery&lt;TEntityDTO&gt;(@"my query went here").ToList();)

标签: sql asp.net api entity-framework linq


【解决方案1】:

我通过添加一个模型类解决了这个问题,我在其中定义了 sql 查询中特定列的属性,并将其用作填充数据的对象。

【讨论】:

    猜你喜欢
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多