Ada*_*Tal 0 c# linq lambda expression expression-trees
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; }
}
Run Code Online (Sandbox Code Playgroud)
如果我想创建一个成员访问Employee.Name的表达式树,这就是我所做的:
var param = Expression.Parameter(type, "x");
var memberAccess = Expression.PropertyOrField(param, memberName);
return Expression.Lambda<Func<TModel, TMember>>(memberAccess, param);
Run Code Online (Sandbox Code Playgroud)
成员访问Employee.Job.Salary的等价物是什么?
Jon*_*eet 10
你需要:
var jobProperty = Expression.PropertyOrField(param, "Job");
var salaryProperty = Expression.PropertyOrField(jobProperty, "Salary");
Run Code Online (Sandbox Code Playgroud)
基本上你是Salary从评估结果中取得财产的x.Job.
如果您需要以编程方式执行此操作,则需要以下内容:
Expression expression = Expression.Parameter(type, "x");
foreach (var property in properties.Split('.'))
{
expression = Expression.PropertyOrField(expression, property);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1915 次 |
| 最近记录: |