コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }