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; }
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()); }