C# 从NewExpression成员获取链中属性的名称

C# 从NewExpression成员获取链中属性的名称,c#,reflection,lambda,linq-expressions,C#,Reflection,Lambda,Linq Expressions,假设这个表达式: Expression<Func<DateTime, dynamic>> exp = dt => new { dt.Second, dt.Hour, dt.Date.Day }; 但我只得到:“秒”、“小时”、“天” 这有点类似于,但我在这里处理一个新表达式。也许您可以尝试使用参数而不是成员 var body = exp.Body as NewExpression; foreach (var member in body.Arguments) {

假设这个表达式:

Expression<Func<DateTime, dynamic>> exp = dt => new { dt.Second, dt.Hour, dt.Date.Day };
但我只得到:
“秒”、“小时”、“天”



这有点类似于,但我在这里处理一个新表达式。

也许您可以尝试使用
参数
而不是
成员

var body = exp.Body as NewExpression;
foreach (var member in body.Arguments)
{
    Console.WriteLine(member);
}
输出为:

dt.Second
dt.Hour
dt.Date.Day
dt.Second
dt.Hour
dt.Date.Day