c# - 如何从 System.Linq.Expressions.Expression 中删除括号?

标签 c# linq lambda expression expression-trees

假设定义了以下类:

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

如何删除这些括号?

最佳答案

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

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

关于c# - 如何从 System.Linq.Expressions.Expression 中删除括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30274477/

相关文章:

python - 如何使用 lambda 来处理多个字典值?

python - 将按钮信号绑定(bind)到 Qt 中的插槽所需的另一种解决方案

c# - 无法定义递归的扩展方法

c# - 如何使用 dapper 回滚事务

c# - 为什么不能从扩展类型的基类中调用扩展方法?

c# - 修改 IQueryable.Include() 的表达式树,为 join 添加条件

c# - 如何在 c# 中使用 foreach 在列表中创建列表?

c# - 我需要使用 MultipleActiveResultSets 功能吗?

c# - Mysql 减慢了我的应用程序速度

c# - 将多个值放入 Azure 移动服务的 WHERE 子句中