Get Property Name(string) from Expression(only use for MemberExpression) , e.g. (p)=>p.Name , will get "Name"
public static string GetMemberNameFromExpression<TEntity,TReturn>(Expression<Func<TEntity, TReturn>> exp)
{
if (exp.Body.NodeType != ExpressionType.MemberAccess)
throw new Exception("Expression Body Right must be Member Access.");
var memberExp = (MemberExpression)exp.Body;
return memberExp.Member.Name;
}