/// <summary> /// Visits the children of the <see cref="T:System.Linq.Expressions.MemberExpression"/>. /// </summary> /// <returns> /// The modified expression, if it or any subexpression was modified; otherwise, returns the original expression. /// </returns> /// <param name="node">The expression to visit.</param> protected override Expression VisitMember(MemberExpression node) { if (QueryHelper.IsSpecificMemberExpression(node, node.Expression.Type, CacheHelper.TryGetPropertyList(node.Expression.Type))) { _writer.ColumnName(QueryHelper.GetPropertyNameWithIdentifierFromExpression(node)); return(node); } else if (QueryHelper.IsVariable(node)) { _writer.Parameter(QueryHelper.GetValueFromExpression(node)); return(node); } else if (QueryHelper.IsHasValue(node)) { var me = base.VisitMember(node); _writer.IsNull(); return(me); } return(base.VisitMember(node));; }