0
public class Job
{
    public string Name { get; set; }
    public int Salary { get; set; }
}
public class Employee
{
    public string Name { get; set; }
    public Job Job { get; set; }
}

Employee.Name へのメンバー アクセスの式ツリーを作成する場合は、次のようにします。

        var param = Expression.Parameter(type, "x");
        var memberAccess = Expression.PropertyOrField(param, memberName);
        return Expression.Lambda<Func<TModel, TMember>>(memberAccess, param);

Employee.Job.Salary へのメンバー アクセスに相当するものは何ですか?

4

2 に答える 2

10

必要なもの:

var jobProperty = Expression.PropertyOrField(param, "Job");
var salaryProperty = Expression.PropertyOrField(jobProperty, "Salary");

基本的にSalary、評価の結果からプロパティを取得していますx.Job

プログラムでこれを行う必要がある場合は、次のようなものが必要になります。

Expression expression = Expression.Parameter(type, "x");
foreach (var property in properties.Split('.'))
{
    expression = Expression.PropertyOrField(expression, property);
}
于 2012-06-23T08:25:24.553 に答える