如何写入计数,在LINQ中与Oracle不同

如何写入计数,在LINQ中与Oracle不同,linq,oracle,join,count,distinct,Linq,Oracle,Join,Count,Distinct,我在Oracle中有一个查询,我正在尝试将其转换为linq。我想我快到了。这是Oracle中的查询。我在查询中很快遇到了左外部联接的问题。在这个问题上也请考虑一下。我的主要问题是无法使用此计数进行写入,因为此计数对于表中的不同列是不同的 SELECT COUNT(DISTINCT claimant_id || rqst_wk_dt || claim_id) AS no_of_weeks_compensated , SUM(pmt_am) AS total_payments ,

我在Oracle中有一个查询,我正在尝试将其转换为linq。我想我快到了。这是Oracle中的查询。我在查询中很快遇到了左外部联接的问题。在这个问题上也请考虑一下。我的主要问题是无法使用此计数进行写入,因为此计数对于表中的不同列是不同的

SELECT COUNT(DISTINCT claimant_id || rqst_wk_dt || claim_id) AS no_of_weeks_compensated
     , SUM(pmt_am) AS total_payments
     , COUNT(DISTINCT claimant_id || claim_id)
  FROM (SELECT c.claimant_id
             , c.claim_id
             , c.rqst_wk_dt
             , a.pmt_am
          FROM ui_mon_hdr d

         INNER JOIN ui_rqst_wk_ctrl c
            ON d.claimant_id = c.claimant_id
           AND d.claim_id = c.claim_id

          LEFT OUTER JOIN ui_dstb_pmt a
            ON c.claimant_id = a.claimant_id
           AND c.claim_id = a.claim_id
           AND c.rqst_wk_dt = a.rqst_wk_dt
           AND a.rcpnt_id = 'CLMNT'

          LEFT OUTER JOIN ui_claim_pmt b
            ON c.claimant_id = b.claimant_id
           AND c.claim_id = b.claim_id
           AND warrant_dt BETWEEN '1 June 2011' AND '30 June 2011'
           AND b.status_cd = 'PAID'
           AND a.rcpnt_id = b.rcpnt_id --AND  A.PMT_NU = B.PMT_NU

          LEFT OUTER JOIN ui_auth_pmt e
            ON c.claimant_id = e.claimant_id
           AND c.claim_id = e.claimant_id
           AND c.rqst_wk_dt = e.rqst_wk_dt
           AND d.mon_seq_nu = e.mon_seq_nu

         WHERE c.rqst_wk_dt BETWEEN '1 June 2011' AND '30 June 2011'
           AND d.bspd_type_cd = 'ALTR')
上面是我在Oracle中使用并在TOAD中运行的查询。下面是LINQ中的查询。我刚刚完成了内部select语句,我想知道如何为查询实现select计数和distinct:

var enddate=Convert.ToDateTime(“6/30/2011”);
var Altquery=来自UiMonHdr中的D
在新的{D.ClaimantId,D.ClaimId}上加入UiRqstWkCtrl中的C等于新的{C.ClaimantId,C.ClaimId}
在新的{C.ClaimantId,C.ClaimId,C.RqstWkDt}上加入UiDstbPmt中的A等于新的{A.ClaimantId,A.ClaimId,A.RqstWkDt}
其中A.RcpntId.包含(“CLMNT”)
在新的{C.ClaimantId,C.ClaimId,A.RcpntId}上加入UiClaimPmt中的B等于新的{B.ClaimantId,B.ClaimId,B.RcpntId}

其中B.StatusCd.包含(“已支付”)&&B.warrandt>=startdate&&B.warrandt=startdate&&C.RqstWkDt您最好先选择不同的结果,然后进行计数。只是一个问题-为什么不简单地运行正在工作的SQL查询,而不是尝试将其转换为LINQ?这是因为有人要求我们在LINQ中实现,这比SQL要好得多看起来…林克真的很烂。。。