以下情景:
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属性值,如下所示:
基本上:
项目1 A是起点,具有任何价值......
第1项B值始终与第1项A相同
第2项A可以是任何
项目2 B =项目1 B +项目2 A
第3项A可以是任何
项目3 B =项目2 B +项目3 A
等等。
如何遍历列表并自动计算项目的B属性值?
答案 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;
}
由于您提到您不经常进行此计算(您的列表不会经常更改),因此这不仅仅是处理作业。