【问题标题】:Getting Names of properties in a chain from NewExpression members从 NewExpression 成员获取链中属性的名称
【发布时间】:2016-01-04 08:35:54
【问题描述】:

假设这个表达式:

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。

【问题讨论】:

    标签: c# reflection lambda linq-expressions


    【解决方案1】:

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

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

    输出是:

    dt.Second
    dt.Hour
    dt.Date.Day
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-16
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多