首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据聚合

数据聚合
EN

Stack Overflow用户
提问于 2012-06-23 19:08:21
回答 1查看 459关注 0票数 1

在我的代码中,我创建了以下类的List<>

代码语言:javascript
复制
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年的数据)。

聚合本身非常简单,它只是类中包含的数据的累积值。

然而,考虑到我在上面定义的逻辑(即在审查期内),我正在努力解决如何聚合数据的逻辑。

我们将非常感谢您的任何指示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-23 19:11:04

使用允许您根据索引进行过滤的Where重载:

代码语言:javascript
复制
var result = listCalculations
    .Where((x, index) => index % globalReviewPeriod == 0)
    .Sum(...); // Put some aggregation here.

在文档中,lambda函数的用法如下:

谓词

类型: System.Func

用于测试每个源元素的条件的函数;该函数的第二个参数表示源元素的索引。

请注意,上面的代码将始终包含第一项,因为它的索引为0,可以被每个数字整除。如果您希望在第一个元素的索引为1的情况下使用基于1的索引,则可能希望使用(index + 1)而不是index

代码语言:javascript
复制
var result = listCalculations
    .Where((x, index) => (index + 1) % globalReviewPeriod == 0)
    .Sum(...); // Put some aggregation here.
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11169012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档