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

Getting Names of properties in a chain from NewExpression members

假设这个表达式:

Expression<Func<DateTime, dynamic>> exp = dt => new { dt.Second, dt.Hour, dt.Date.Day };

我需要获得以下信息:"Second", "Hour", "Date.Day"

我能完成的最好成绩如下:

var body = exp.Body as NewExpression;
foreach(var member in body.Members)
    member.Name().Dump();

但我只得到:"Second", "Hour", "Day"


这与 this question 有点相似,但我在这里处理的是 NewExpression。

也许你可以试试 Arguments 而不是 Members

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

输出为:

dt.Second
dt.Hour
dt.Date.Day