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

时间:2014-09-17 23:00:43

标签: c# lambda expression linq-expressions

我在C#中有一个表达式

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

我想把它分解为

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

所以我可以遍历每个参数。 有人对此有所了解吗?

2 个答案:

答案 0 :(得分:0)

匿名声明只是匿名类型generated at compile time的抽象。

你无法像你描述的那样动态生成它们。

答案 1 :(得分:0)

我不知道您为什么要这样做,但mellamokb评论显示了方向。整个方法看起来像这样:

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