我想在列表上编写一个扩展方法,对列表项和提供的双精度执行算术运算,然后将结果写回列表中。例子:
public class Datum
{
public DateTime DateTime;
public double Value;
}
public static class DateExt
{
public static double Average(this IEnumerable<Datum> @this)
{
return @this.Average(datum => datum.Value);
}
public static double Sum(this IEnumerable<Datum> @this)
{
return @this.Sum(datum => datum.Value);
}
public static IEnumerable<Datum> InTimeRange(this IEnumerable<Datum> @this, DateTime start, DateTime end)
{
return from datum in @this
where (start <= datum.DateTime && datum.DateTime < end)
select datum;
}
}
这让我可以执行以下操作:
return somelist.InTimeRange(startdate, enddate).Sum()
这将返回两个日期之间所有项目的总和。我现在想创建一个扩展方法,它需要一个 double 并相应地更新列表。例如:
return somelist.InTimeRange(startdate, enddate).Addition(double val)
应将 val 添加到列表中开始日期和结束日期之间的每个项目。我试过这个:
public static double Addition(this IEnumerable<Datum> @this, double val)
{
return @this.(datum => datum.Value)+= val;
}
但这不起作用。
因此,如果列表项为 10 且 val = 5,则相同位置的更新列表项应为 15 - 只是为了避免疑问。
任何想法表示赞赏。
谢谢。