2013-10-02 26 views
0

这是我的课选择列表中值的总和:里面怎么另一个列表

Data: 

    ID=1 value=5 
    ID=1 value=6 
    ID=2 value=7 
    ID=2 value=9 
    ID=3 value=2 

Can I get this Result: 
    ID=1 Value=11 
    ID=2 value=16 
    ID=3 value=2 

class Account{ 
     public List<AccountRecord> AccountRecords{set;get;}  
} 
class AccountRecord{ 
     public IEnumerable<AccountValue> AccountValues{set;get;}  
} 
class AccountValue{ 
public int ID{set;get;}  
public decimal value{set;get;}  
} 

可以使用实体框架C# 例如我得到AccountValue值组的总和ID代码:

Account acc = new Account(); 
     AccountRecord ar = new AccountRecord(); 
     ar.AccountValues.Add(new AccountValue { ID = 1, value = 5 }); 
     ar.AccountValues.Add(new AccountValue { ID = 1, value = 7 }); 
     ar.AccountValues.Add(new AccountValue { ID = 2, value = 9 }); 
     ar.AccountValues.Add(new AccountValue { ID = 2, value = 6 }); 
     ar.AccountValues.Add(new AccountValue { ID = 3, value = 2 }); 

     AccountRecord ar1 = new AccountRecord(); 
     ar1.AccountValues.Add(new AccountValue { ID = 1, value = 10 }); 
     ar1.AccountValues.Add(new AccountValue { ID = 1, value = 70 }); 
     ar1.AccountValues.Add(new AccountValue { ID = 2, value = 90 }); 
     ar1.AccountValues.Add(new AccountValue { ID = 2, value = 60 }); 
     ar1.AccountValues.Add(new AccountValue { ID = 3, value = 20 }); 
     acc.AccountRecords.Add(ar1); 

我想通过ID来自ACC的对象来获取值组的总和

+0

你尝试过什么?在一个简单的例子中,你可以使用'for..each'循环来实现这一点。 – Yuck

+0

我更新了我的问题 –

回答

1

我猜你正在寻找的东西,如:

Account accountObj = new Account(); 
var result = accountObj.AccountRecords 
         .SelectMany(r => r.AccountValues) 
         .GroupBy(r => r.ID) 
         .Select(grp => new 
         { 
          ID = grp.Key, 
          Sum = grp.Sum(t => t.value) 
         }); 
相关问题