public static IEnumerable <SearchItem> ToNumber(SearchExpressionContext c) { return(c.args.SelectMany(e => e.Execute(c)).Select(item => { SearchExpression.TryConvertToDouble(item, out var value); return SearchExpression.CreateItem(value); })); }
static T Aggregate <T>(SearchItem item, string selector, T agg, Func <double, T, bool> comparer, Func <double, T, T> aggregator) where T : struct { if (item != null && SearchExpression.TryConvertToDouble(item, out var d, selector) && comparer(d, agg)) { return(aggregator(d, agg)); } return(agg); }