1

SQLをストアドプロシージャからlinq、SQLコードに変換する際に問題が発生しています。クエリは基本的にアイテムをグループ化し、数値の合計を返します。

私が作成しようとしているコードは実行されますが、アイテムがグループ化されず、合計も機能しません。groupbyとsumなしで取得する場合のように値を取得します。

また、私が選択したい組織とは関係がないようです。

SQLコードは機能し、linqからSQLへの変換が問題を引き起こします。

誰かが私が間違っていることを私に指摘してくれれば幸いです。

SQLコード:

CREATE TABLE #T1 (a varchar(255), b varchar(255), c varchar(250), d varchar(250), e varchar(250), ACAP int);



INSERT INTO #T1
Select SubProgram AS a, SubSubProgram as b, SubSubSubProgram as c, Sub4Program as d, Su5Program as e, Sum(Deliverable1) AS ACAP
 FROM LogicModel.Deliverables, LogicModel.ProgramNumbers
 WHERE 
    LogicModel.ProgramNumbers.OrganizationName = @OrganizationName AND
    LogicModel.ProgramNumbers.ProgramNumber = LogicModel.Deliverables.ProgramNumber AND
    LogicModel.Deliverables.FiscalYear = @FiscalYear AND
    LogicModel.Deliverables.Program = (09-10.1a) 'Education presentations by type'
GROUP BY
    SubProgram, SubSubProgram, SubSubSubProgram , Sub4Program, Sub5Program


SELECT a, b, c, d, e, isnull(ACAP, 0) as ACAP from #T1

統合言語クエリ

  var deliverables = (from de in OCHART.Deliverables
                                join pn in OCHART.ProgramNumbers on de.ProgramNumber equals pn.ProgramNumber1 into prt
                                from x in prt.Where(prt2 => prt2.OrganizationName.Equals(organization)).DefaultIfEmpty()
                                where de.FiscalYear == FiscalYear && de.Program.Equals("(09-10.1a) Education presentations by type")
                                group de by new { SubProgram = de.SubProgram, SubSubProgram = de.SubSubProgram, SubSubSubProgram = de.SubSubSubProgram, Sub4Program = de.Sub4Program, Sub5Program = de.Sub5Program, deliverable = de.Deliverable1 } into gr
                                select new
                                {
                                    SubProgram = gr.Key.SubProgram,
                                    SubSubProgram = gr.Key.SubSubProgram,
                                    SubSubSubProgram = gr.Key.SubSubSubProgram,
                                    Sub4Program = gr.Key.Sub4Program,
                                    Sub5Program = gr.Key.Sub5Program,
                                    deliverable1 = gr.Sum(g => g.Deliverable1),
                                    deliverable2 = gr.Sum(g => g.Deliverable2)
                                }).ToList();

時間を割いて助けてくれてありがとう。それは有り難いです。

4

1 に答える 1

1

クイックソリューション(回避策):

お持ちのストアドプロシージャを実行してみませんか。ストアドプロシージャはすでにテストされているため。それはあなたの時間を節約するでしょう。

ストアドプロシージャをDBMLファイルにドラッグアンドドロップするだけです。あなたがしなければならないのはそれを使うことだけです。

于 2012-08-09T06:47:54.810 に答える