public object Evaluate(params object[] parameters) { object source = parameters != null ? parameters[0] : null; string key = (string)parameters[1]; object condition = parameters[2]; if (source == null) { return(null); } if (key == null) { throw FunctionEvaluationException.WrongParameter(this, 1, source); } if (source is IEnumerable) { var linq = ((IEnumerable)source).Cast <object>(); return(linq.Where( item => { var t = new Reflection(item)[key]; if (t == null && condition == null) { return true; } return Equals(TypeConverter.To(t, condition.GetType()), condition); } ).ToArray()); } throw FunctionEvaluationException.WrongParameter(this, 0, source); }
public object Evaluate(params object[] parameters) { object source = parameters != null ? parameters[0] : null; if (source == null) { return(0); } else if (source is string) { return(((string)source).Length); } else if (source is IDictionary) { return(((IDictionary)source).Count); } else if (source is Array) { return(((Array)source).Length); } else if (source is IList) { return(((IList)source).Count); } if (source is IEnumerable) { return(CountEnumerable((IEnumerable)source)); } else { throw FunctionEvaluationException.WrongParameter(this, 0, source); } }
public object Evaluate(params object[] parameters) { object source = parameters != null ? parameters[0] : null; if (source == null) { return(null); } else if (source is string) { return(StringUtils.Reverse((string)source)); } else if (source is Array) { return(CollectionUtils.Reverse((Array)source)); } else if (source is IEnumerable) { Stack reversed = new Stack(); foreach (var o in source as IEnumerable) { reversed.Push(o); } return(reversed); } else { throw FunctionEvaluationException.WrongParameter(this, 0, source); } }
public object Evaluate(params object[] parameters) { object source = parameters != null ? parameters[0] : null; string key = (string)parameters[1]; if (source == null) { return(null); } if (key == null) { throw FunctionEvaluationException.WrongParameter(this, 1, source); } if (source is IEnumerable) { var linq = ((IEnumerable)source).Cast <object>(); return(linq.Select( item => new Reflection(item)[key] ).ToArray()); } throw FunctionEvaluationException.WrongParameter(this, 0, source); }