如何拆分在C#中创建匿名类型的表达式

本文关键字:创建 类型 表达式 何拆分 拆分 | 更新日期: 2023-09-27 18:22:19

我在C#中有一个表达式

abc => new { abc.x, abc.y }

我想把它分解成

abc => abc.x
abc => abc.y
...

这样我就可以循环遍历每个参数。有人对此有所了解吗?

如何拆分在C#中创建匿名类型的表达式

匿名声明只是编译时生成的匿名类型的抽象。

你将无法像你描述的那样快速生成它们。

我不知道你为什么要这么做,但mellamokb注释指明了方向。整个方法可能看起来像这样:

IEnumerable<Expression> GetExpressions<TParam, TResult>(
    Expression<Func<TParam, TResult>> expression)
{
    return ((NewExpression)expression.Body).Arguments
        .Select(a => Expression.Lambda(a, expression.Parameters.Single()));
}
相关文章: