string GetPropertyName(Expression e) { var lambdaExpression = e as LambdaExpression; if (lambdaExpression != null) { return GetPropertyName(lambdaExpression.Body); } var unaryExpression = e as UnaryExpression; if (unaryExpression != null) { return GetPropertyName(unaryExpression.Operand); } var memberExpression = e as MemberExpression; if (memberExpression != null) { return memberExpression.Member.Name; } throw new NotSupportedException(String.Format("Invalid Expression: {0}.", e.ToString())); }