static object Sum(List <Expression> p) { var tally = new Tally(); foreach (Expression e in p) { tally.Add(e); } return(tally.Sum()); }
static object SumIf(List <Expression> p) { // get parameters IEnumerable range = p[0] as IEnumerable; IEnumerable sumRange = p.Count < 3 ? range : p[2] as IEnumerable; var criteria = p[1].Evaluate(); // build list of values in range and sumRange var rangeValues = new List <object>(); foreach (var value in range) { rangeValues.Add(value); } var sumRangeValues = new List <object>(); foreach (var value in sumRange) { sumRangeValues.Add(value); } // compute total var ce = new CalcEngine(); var tally = new Tally(); for (int i = 0; i < Math.Min(rangeValues.Count, sumRangeValues.Count); i++) { if (ValueSatisfiesCriteria(rangeValues[i], criteria, ce)) { tally.AddValue(sumRangeValues[i]); } } // done return(tally.Sum()); }
static object SumIf(List<Expression> p) { // get parameters IEnumerable range = p[0] as IEnumerable; IEnumerable sumRange = p.Count < 3 ? range : p[2] as IEnumerable; var criteria = p[1].Evaluate(); // build list of values in range and sumRange var rangeValues = new List<object>(); foreach (var value in range) { rangeValues.Add(value); } var sumRangeValues = new List<object>(); foreach (var value in sumRange) { sumRangeValues.Add(value); } // compute total var ce = new CalcEngine(); var tally = new Tally(); for (int i = 0; i < Math.Min(rangeValues.Count, sumRangeValues.Count); i++) { if (ValueSatisfiesCriteria(rangeValues[i], criteria, ce)) { tally.AddValue(sumRangeValues[i]); } } // done return tally.Sum(); }
static object Sum(List<Expression> p) { var tally = new Tally(); foreach (Expression e in p) { tally.Add(e); } return tally.Sum(); }