Exemplo n.º 1
0
        private void TreeWalker(Expression expression, ref IList <string> builder)
        {
            if (expression == null)
            {
                return;
            }

            BinaryExpression binaryExpression;

            switch (expression.NodeType)
            {
            case ExpressionType.Lambda:
                TreeWalker((expression as LambdaExpression).Body, ref builder);
                break;

            case ExpressionType.AndAlso:
            case ExpressionType.OrElse:
                binaryExpression = expression as BinaryExpression;
                if (binaryExpression != null)
                {
                    TreeWalker(binaryExpression.Left, ref builder);
                    builder.Add(GetOperator(expression.NodeType));
                    TreeWalker(binaryExpression.Right, ref builder);
                }
                break;

            case ExpressionType.Conditional:
            case ExpressionType.Equal:
            case ExpressionType.GreaterThan:
            case ExpressionType.GreaterThanOrEqual:
            case ExpressionType.LessThan:
            case ExpressionType.LessThanOrEqual:
                binaryExpression = expression as BinaryExpression;

                if (binaryExpression != null)
                {
                    var prdicateString = GetExpressionString(binaryExpression.Left) +
                                         GetOperator(expression.NodeType) +
                                         (_getValueFromRhf
                                                ? _dbConvention.ToValueNameConvention(GetExpressionValue(binaryExpression.Right))
                                                : GetExpressionString(binaryExpression.Right));
                    builder.Add(prdicateString);
                }
                break;

            case ExpressionType.Convert:
                expression = ((UnaryExpression)expression).Operand;
                break;

            case ExpressionType.Call:
                builder.Add(ProcessMethodCall(expression));
                break;

            default:
                break;
            }
            return;
        }
Exemplo n.º 2
0
        public static string ToCommaSeparatedList(this List <string> source, BaseConvension convension)
        {
            var commaSeparated = new StringBuilder();
            var first          = true;

            foreach (var item in source)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    commaSeparated.Append(", ");
                }
                commaSeparated.Append(convension.ToValueNameConvention(item));
            }
            return(commaSeparated.ToString());
        }