0

システムの書き換えに忙しく、Linqクエリを使用してデータベースからデータを抽出しています。私は古いTSQLとストアドプロシージャに慣れているので、Linqのスキルは最高ではありません。結合、where句およびINステートメントを含むLinqで書き直そうとしているSQLクエリがあります。私はそれを正しく理解していますが、SQLクエリを実行すると、Linqクエリとは異なる値を取得します。どこかで何かが足りず、理由がわかりません。

SQLは次のとおりです。

select 
    isnull(Sum(QtyCC) + Sum(QtyEmployee), 0) *
    isnull(Sum(UnitPrice), 0)[TotalRValue]             
from 
    tbl_app_KGCWIssueLines a
        inner join tbl_app_KGCWIssue b on b.IssueNrLnk = a.IssueNrLnk
where   
    b.CreationDate >= '2011-02-01' and 
    a.IssueNrLnk IN (
        select 
            IssueNrLnk
        from 
            tbl_app_KGCWIssue
        where   
            CustomerCode = 'PRO002' and   
            ISNULL(Tier1,'') = 'PRO002' and   
            ISNULL(Tier2,'') = 'HAMD01' and   
            ISNULL(Tier3,'') = '02' and   
            ISNULL(Tier4,'') = '02001' and  
            ISNULL(Tier5,'') = 'PTAHQ001' and   
            ISNULL(Tier6,'') = '035' and   
            ISNULL(Tier7,'') = '' and   
            ISNULL(Tier8,'') = '' and   
            ISNULL(Tier9,'') = '' and   
            ISNULL(Tier10,'') = ''
)

そしてここにLinqがあります:

ctx.ObjectContext.tbl_app_KGCWIssue
    .Join(ctx.ObjectContext.tbl_app_KGCWIssueLines, 
        i => i.IssueNrLnk, l => l.IssueNrLnk, (i, l) => new { i, l })
    .Where(o => o.i.CreationDate >= IntervalStartDate)
    .Where(p => ctx.ObjectContext.tbl_app_KGCWIssue
        .Where(a => 
            a.CustomerCode == CustomerCode && 
            a.Tier1 == employee.Tier1 && 
            a.Tier2 == employee.Tier2 && 
            a.Tier3 == employee.Tier3 && 
            a.Tier4 == employee.Tier4 && 
            a.Tier5 == employee.Tier5 && 
            a.Tier6 == employee.Tier6 && 
            a.Tier7 == employee.Tier7 && 
            a.Tier8 == employee.Tier8 && 
            a.Tier9 == employee.Tier9 && 
            a.Tier10 == employee.Tier10)
        .Select(i => i.IssueNrLnk)
        .Contains(p.l.IssueNrLnk))
    .Sum(p => p.l.UnitPrice * (p.l.QtyEmployee + p.l.QtyCC));
4

0 に答える 0