private static IList ValueList(IFilterStatement statement) { var type = statement.GetPropertyType(); var myList = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(type), statement.Value); if (type == typeof(string)) { for (var itemIndex = 0; itemIndex < myList.Count; itemIndex++) { myList[itemIndex] = (myList[itemIndex] as string)?.Trim().ToLower(); } } return(myList); }
private Expression GetConstantExpression(Expression member, IFilterStatement statement) { var value = statement.Value; if (value == null) { return(null); } Expression constant = Expression.Constant(value); if (value is string) { var trimConstantCall = Expression.Call(constant, helper.trimMethod); constant = Expression.Call(trimConstantCall, helper.toLowerMethod); } else if (statement.ValueIsList()) { var myList = ValueList(statement); constant = Expression.Constant(statement.Operation == Operation.Between ? new ArrayList(myList).ToArray(statement.GetPropertyType()) : myList); } return(constant); }