1

以下のコードは、「SCharge」の合計とともに、各 InvNo の行を表示します:0

var Values = from data in DtSet.Tables["tblCosts"].AsEnumerable()
            group data by new
            {
                InvNo = data.Field<double>("InvoiceNo"),
                AccRef = data.Field<double>("SiteRefNum"),
            }
            into g
            select new
            {
                Code = "1",
                InvType = "I",
                Account = g.Key.AccRef,
                InvNo = g.Key.InvNo,
                SCharge = g.Sum(d => d.Field<double>("SCharge"))
            };

これを変更して、下に別の行セットを取得する方法はありますか?今回は列「TCharge」で合計を計算しますか、それとも新しいクエリを実行する必要がありますか?

4

2 に答える 2

2

したがって、すべての行を 2 回表示したいが、2 回目はわずかに異なるプロジェクションを使用する必要があるため、まずグループ化のクエリを保存し、次にそれらのグループに対して 2 つのプロジェクションを実行してそれらを結合します。

var groupings = DtSet.Tables["tblCosts"].AsEnumerable()
                .GroupBy(data => new
                {
                    InvNo = data.Field<double>("InvoiceNo"),
                    AccRef = data.Field<double>("SiteRefNum"),
                }).ToList();

var Values = groupings.Select(g => new
{
    Code = "1",
    InvType = "I",
    Account = g.Key.AccRef,
    InvNo = g.Key.InvNo,
    Charge = g.Sum(d => d.Field<double>("SCharge"))
})
.Concat(groupings.Select(g => new
{
    Code = "1",
    InvType = "I",
    Account = g.Key.AccRef,
    InvNo = g.Key.InvNo,
    Charge = g.Sum(d => d.Field<double>("SCharge"))
}));
于 2013-01-23T17:25:18.160 に答える
0
select new
     {
       Code = "1",
        InvType = "I",
        Account = g.Key.AccRef,
        InvNo = g.Key.InvNo,
        SCharge = g.Sum(d => d.Field<double>("SCharge")),
        TCharge = g.Sum(d => d.Field<double>("TCharge"))
     };
于 2013-01-23T17:27:35.803 に答える