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

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -