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

本文关键字:属性 NewExpression 成员 获取 | 更新日期: 2023-09-27 18:28:27

假设这个表达式:

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"


这与这个问题有点相似,但我在这里处理的是一个NewExpression。

从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