c#list聚合计算算法

时间:2015-03-26 12:42:09

标签: c#

以下情景:

public class Data
{
   public Data()
   {
        Details = new List<Details>();
   }

   public List<Details> Details {get; set;}
}

public class Details
{
   public Details()
   {

   }

   public decimal A {get; set;}
   public decimal B {get, set;}
}

后面的代码:

Data dt = new Data();

Details det = new Details();
det.A = 2;    

dt.Details.Add(det); // add X amount of details to the list
.........

现在列表将如下所示:

Item 1:  A = 2 , B = 0
Item 2:  A = 2 , B = 0
Item 3:  A = 2 , B = 0
Item 4:  A = 2 , B = 0
.....
Item N:  A = 2 , B = 0

如何计算B属性值,如下所示:

enter image description here

基本上:

项目1 A是起点,具有任何价值......

第1项B值始终与第1项A相同

第2项A可以是任何

项目2 B =项目1 B +项目2 A

第3项A可以是任何

项目3 B =项目2 B +项目3 A

等等。

如何遍历列表并自动计算项目的B属性值?

2 个答案:

答案 0 :(得分:1)

这应该这样做:

var prev = new Details();
foreach (var item in dt.Details)
{
    item.B = item.A + prev.B;
    prev = item;
}

答案 1 :(得分:0)

看起来你只需要存储每个变量的运行总和。为此,只需修改正常运行总和方法并将其存储到detail

decimal currentSum = 0;
for (int i = 0; i < detailList.Count; i++)
{
    var detail = detailList[i];
    currentSum += detail.A;
    detail.B = currentSum;
}

由于您提到您不经常进行此计算(您的列表不会经常更改),因此这不仅仅是处理作业。