protected override Expression VisitMethodCall(MethodCallExpression node) { if (!node.IsConstant()) { switch (node.Method.Name) { case "Contains": ParseMethodContains(node); break; case "Count": ParseMethodCount(node); break; case "Max": ParseMethodMax(node); break; } } else { var objectMember = Expression.Convert(node, typeof(object)); var getterLambda = Expression.Lambda<Func<object>>(objectMember); var getter = getterLambda.Compile()(); this.Column = new ParameterColumn(this.Context.AddParameter(getter)) { Type = node.Type }; } return node; }