C# LINQ-迭代日期集合并执行计算
我有一个具有DateTime和decimal属性的对象集合。集合中的所有日期都是唯一的,并按顺序排序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对这些结果的总和求和。类
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进行编码。