Property Name to Lambda Expression C#

后端 未结 2 477
鱼传尺愫
鱼传尺愫 2021-01-04 14:21

How can I convert a property name to Lambda expression in C#?

Like this: string prop = \"Name\"; to (p => p.Name)

publi         


        
2条回答
  •  没有蜡笔的小新
    2021-01-04 14:42

    Using expression trees you can generate the lambda expression.

    using System.Linq.Expressions;
    public static Expression> GetPropertySelector(string propertyName)
    {
        var arg = Expression.Parameter(typeof(T), "x");
        var property = Expression.Property(arg, propertyName);
        //return the property as object
        var conv = Expression.Convert(property, typeof(object));
        var exp = Expression.Lambda>(conv, new ParameterExpression[] { arg });
        return exp;
    }
    

    for Person you can call it like:

    var exp = GetPropertySelector("Name");//exp: x=>x.Name
    

提交回复
热议问题