【问题标题】:How to remove Parantheses from System.Linq.Expressions.Expression?如何从 System.Linq.Expressions.Expression 中删除括号?
【发布时间】:2015-05-16 10:25:20
【问题描述】:

假设定义了以下类:

public class Person 
{
    public int Age { get; set; }
}

现在我想构建一个Expression,它将Age 属性与20 进行比较,如下所示:

ParameterExpression param = Expression.Parameter(typeof(Person), "Person");
MemberExpression member = Expression.Property(param, "Age");
ConstantExpression constant = Expression.Constant(20);
Expression exp = Expression.GreaterThan(member, constant);

现在exp(Person.Age > 20)

需要像Person.Age > 20

如何去掉那些括号?

【问题讨论】:

  • 我正在使用 NHibernate,并且即使在明确编写时,用括号添加这个表达式树似乎也失败了。虽然没有括号,但它可以
  • stackoverflow.com/questions/30274155/… 你已经问过几乎相同的问题,得到了完全相同的回答:没有括号

标签: c# linq lambda expression expression-trees


【解决方案1】:

括号实际上不在树中。这正是内置ToString 输出的工作方式。它仅用于调试目的。 ToString 输出甚至不是 C# - 它只是有时看起来像它。试试true || true 看看我的意思。我相信它的格式为True OrElse True

无法更改输出格式。如果您需要某种输出格式,请自行进行格式化。这可能是一项相当大的工作。

【讨论】:

    猜你喜欢
    • 2013-11-11
    • 2015-10-21
    • 2020-06-21
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多