在我的代码中,我创建了以下类的List<>
:
public class Calculations
{
public int Year { get; set; }
public double Payment { get; set; }
public double AnnualInterest { get; set; }
public double AnnualPrincipalSplit { get; set; }
public double NLVBalance { get; set; }
public double apportionedValue { get; set; }
public double OpenMarketValue { get; set; }
public double NotionalLoan { get; set; }
public double ResidencyFee { get; set; }
public double BalanceOfShare { get; set; }
public double TotalShareOwnedOutright { get; set; }
public double TotalEquity { get; set; }
}
该列表包含代表投资期限的数据(例如,超过30年,列表中将有30个项目)
我有一个名为globalReviewPeriod
的变量,它是一个整数,用于定义何时聚合列表中的数据(例如,如果globalReviewPeriod
为5,并且投资期限为30年,然后需要在第5,10,15,20,25和30年汇总数据。
聚合本身非常简单,它只是类中包含的数据的累积值。
然而,考虑到我上面定义的逻辑(即在审核期间),我正在努力解决如何汇总数据的逻辑。
任何指针都会感激不尽。
答案 0 :(得分:6)
使用Where
的重载,允许您根据索引进行过滤:
var result = listCalculations
.Where((x, index) => index % globalReviewPeriod == 0)
.Sum(...); // Put some aggregation here.
从文档中,lambda函数的用法如下:
谓词
输入:System.Func
测试条件的每个源元素的函数;函数的第二个参数表示源元素的索引。
请注意,上面的代码将始终包含第一个项目,因为它具有索引0,可以被每个数字整除。如果您想在第一个元素具有索引1的情况下使用基于1的索引,则可能希望使用(index + 1)
而不是index
。
var result = listCalculations
.Where((x, index) => (index + 1) % globalReviewPeriod == 0)
.Sum(...); // Put some aggregation here.