c#list聚合计算算法


c# list aggregate calculations alghoritm

下列情况:P></

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;}
}

在以后的代码:P></

1
2
3
4
5
6
7
Data dt = new Data();

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

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

现在看这样:Will the listP></

1
2
3
4
5
6
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

知识产权价值calculate the B可以这样:P></

enter image description hereP></

基本上:P></

item 1 is the starting点和有任何价值。P></

item 1 b值将永远be the same as item 1P></

2可以在任何itemP></

item item 1 b 2 b = 2 + itemP></

3可以在任何itemP></

item item 2 3 B = B + item 3P></

我和等等。P></

how可以迭代通过列表B & the automatically calculate the property value of the items?P></


应该这样做:

1
2
3
4
5
6
var prev = new Details();
foreach (var item in dt.Details)
{
    item.B = item.A + prev.B;
    prev = item;
}


似乎您只需要在每个变量中存储一个连续和。为此,只需修改一个正常的运行和方法,并将其存储到detail中。

1
2
3
4
5
6
7
decimal currentSum = 0;
for (int i = 0; i < detailList.Count; i++)
{
    var detail = detailList[i];
    currentSum += detail.A;
    detail.B = currentSum;
}

由于您提到您不经常进行这种计算(您的列表不会经常更改),所以这应该不仅仅是处理工作。