2011-06-10 64 views
0

我有以下類:如何在LINQ查詢中獲得2個求和字段的分割值?

public partial class MemberTank 
{ 
    public int Id { get; set; } 
    public string TankName { get; set; } 
    public int Battles { get; set; } 
    public int Victories { get; set; } 
} 

我試圖構建一個LINQ是讓我TankName的列表,每個儲罐的勝利百分比。我知道我需要劃分戰鬥和勝利的總和,但我不知道該怎麼做。

做一個總和或其他容易...

var sumVictories = (from p in db.MemberTanks 
        group p by p.TankName into g 
        select new { 
         Tank = g.Key, 
         Victories = g.Sum(p => p.Victories) 
        }).OrderByDescending(a => a.Victories); 

...但我不知道如何使它總結這兩個字段然後將其劃分來獲得我所需要的百分比。

+0

能有多個MemberTank實例? – 2011-06-10 19:29:22

+0

是的。 (我知道,數據有點不正常......雖然我可以做的並不多) – 2011-06-10 19:46:33

回答

2

這應該工作...

 var sumVictories = (from p in memberTanks 
          group p by p.TankName 
          into g 
          select new 
            { 

             Tank = g.Key, 
             Victories = g.Sum(p => p.Victories), 
             Avg = ((double)g.Sum(p => p.Victories)/(double)g.Sum(p => p.Battles)) * 100 
            }).OrderByDescending(a => a.Victories); 

[編輯]清理代碼了相同TankName一點