C# LINQ-迭代日期集合并执行计算

C# LINQ-迭代日期集合并执行计算,c#,.net,linq,datetime,lambda,C#,.net,Linq,Datetime,Lambda,我有一个具有DateTime和decimal属性的对象集合。集合中的所有日期都是唯一的,并按顺序排序 public class RateChange { public DateTime EffectiveDate { get; set; } public decimal Rate { get; set; } } 假设第一次速率更改是开始日期,结束日期是当前的DateTime.UtcNow。我如何迭代此集合并将每个日期之间的速率*天相乘,然后仅使用LINQ对这些结果的总和求和。类

我有一个具有DateTime和decimal属性的对象集合。集合中的所有日期都是唯一的,并按顺序排序

public class RateChange
{
    public DateTime EffectiveDate { get; set; }
    public decimal Rate { get; set; }
}
假设第一次速率更改是开始日期,结束日期是当前的DateTime.UtcNow。我如何迭代此集合并将每个日期之间的速率*天相乘,然后仅使用LINQ对这些结果的总和求和。

类似的内容

rateChanges
    .Zip(rateChanges
           .Skip(1)
           .Concat(new[]{
              new RateChange{
                    EffectiveDate = DateTime.Now.Date,
                    Rate = 0M //we never use this
              }
           }),
         (r1, r2) => r1.Rate * (r2 - r1).TotalDays)
    .Sum();

由于rateChanges的双重迭代,最好确保它是一个物化的集合,如数组或
列表

不,它不是作业。我知道如何计算两个日期之间的天数并乘以一个数字!我的问题是,我不知道如何用LINQ来表达我的收藏。更具体地说,它用于转换在RavenDB服务器上运行的数据库索引结果的结果转换器。这些变压器必须使用LINQ进行编码。