2011-04-18 26 views
0

在下面的代碼中,我希望在deptGroup的每個分組中分別爲OBFY和CFY做一筆總和。任何人有任何想法,我已經嘗試了coupla的東西,但無法得到它。謝謝!!LINQ:如何總結使用方法風格linq分組?

var deptGroup = prodCostsTotals.AsQueryable() 
           .Select(r => dt.Rows.Add(new object[] 
            { 
             Convert.ToInt32(r.Field<string>("Proc")), 
             r.Field<string>("UnitL"), 
             r.Field<Decimal?>("OBFY"), 
             r.Field<Decimal?>("CFY") 
            })).GroupBy(g => g.Field<string>("Proc")); 

回答

2

在我看來,你是過度使用DataRow s。如果你在一個不錯的班有你的數據,你可以寫這樣的:

data.GroupBy(x => x.Proc) 
    .Select(g => new 
       { 
        Proc = g.Key, 
        OBFYSum = g.Sum(x => x.OBFY), 
        CFYSum = g.Sum(x => x.CFY) 
       }) 

但是,如果你真的想開始一個DataTable和中間結果添加到另一個DataTable,你可以做這樣的:

prodCostsTotals.AsQueryable() 
       .Select(r => dt.Rows.Add(new object[] 
        { 
        Convert.ToInt32(r.Field<string>("Proc")), 
        r.Field<string>("UnitL"), 
        r.Field<Decimal?>("OBFY"), 
        r.Field<Decimal?>("CFY") 
        })) 
       .GroupBy(g => g.Field<string>("Proc")) 
       .Select(g => new 
       { 
        Proc = g.Key, 
        OBFYSum = g.Sum(x => x.Field<Decimal?>("OBFY")), 
        CFYSum = g.Sum(x => x.Field<Decimal?>("CFY")) 
       }) 

請注意,我不知道你的AsQueryable()使用是否會對這個查詢的第一部分沒有任何影響,但它肯定不會對分組有任何影響。