如何将Sql内部查询转换为Linq的列总和

时间:2017-08-21 13:03:22

标签: sql linq

如何将此sql查询转换为Linq。

select sum(OutstandingAmt)from IvfReceiptDetails where IvfReceiptId IN(select IvfReceiptId from IvfReceipts where PatientId = 'SI-49650')

2 个答案:

答案 0 :(得分:0)

试试这个,首先根据您在where条件中使用的内部查询获取<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input />中的所有IvfReceiptId,然后检查array。如果contains不同,请更改其名称。

_context

答案 1 :(得分:0)

我认为使用查询理解语法而不是lambda语法来翻译SQL更容易。

一般规则:

  1. 将内部查询转换为单独的查询变量
  2. 以LINQ短语顺序翻译SQL短语
  3. 使用表别名作为范围变量,如果没有,则从表名创建范围变量
  4. IN翻译为Contains
  5. DISTINCTSUM等SQL函数转换为整个查询的函数调用。
  6. 以下是代码:

    var IvfReceiptIds = from IvfReceipt in IvfReceipts
                        where IvfReceipt.PatientId = "SI-49650"
                        select IvfReceipt.IvfReceiptId;
    
    var OutstandingAmtSum = (from IvfReceiptDetail in IvfReceiptDetails
                             where IvfReciptIds.Contains(IvfReceiptDetail.IvfReceiptId)
                             select IvfReceiptDetail.OutstandingAmt).Sum();