c# - Extension method for list that performs arithmetic operation on list item -
i write extension method on list performs artithmetic operation on list item , supplied double , writes result list. example:
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 datum in @this (start <= datum.datetime && datum.datetime < end) select datum; } }
this lets me following:
return somelist.intimerange(startdate, enddate).sum()
which return sum on items between 2 dates. create extension method takes double , updates list accordingly. instance:
return somelist.intimerange(startdate, enddate).addition(double val)
should add val each item in list between start date , end date. tried this:
public static double addition(this ienumerable<datum> @this, double val) { return @this.(datum => datum.value)+= val; }
but doesnt work.
so if list item 10 , val = 5 updated list item in same position should 15 - avoidance of doubt.
any ideas appreciated.
thanks.
you update collection i'm assuming destructive operation (i.e. modifies input)
public static ienumerable<datum> addition(this ienumerable<datum> @this, double val) { foreach (var datum in @this) { datum.value += val; } return @this; }
alternatively non destructive version
public static ienumerable<datum> addition(this ienumerable<datum> @this, double val) { return datum in @this select new datum { datetime = datum.datetime, value = datum.value + val }; }
Comments
Post a Comment