gpt4 book ai didi

C#重构lambda表达式

转载 作者:太空狗 更新时间:2023-10-29 20:15:25 25 4
gpt4 key购买 nike

我有几个Expression<Func<User,bool>>共享属性的表达式。例如,

Expression<Func<User, bool>> e1 = 
(User u) => u.IsActive && u.Group != "PROCESS" && u.Name != null;
Expression<Func<User, bool>> e2 =
(User u) => u.IsActive && u.Group != "PROCESS" && u.Name != "A";
Expression<Func<User, bool>> e3 =
(User u) => u.IsActive && u.Group != "PROCESS" && u.Name != "B";

有没有简单的方法来放置 u.IsActive && u.Group != "PROCESS"在变量中并在 e1、e2 和 e3 中使用它?编辑:我仍然想要同一棵树。

似乎我可以通过使用 Expression.Lambda<Func<User, bool>>(BinaryExpression.AndAlso( 构建表达式来做到这一点等等...但它并没有简化我的代码,而是让它更难阅读。

最佳答案

我相信没有比这更适合您的情况的方法了。您可以像您提到的那样使用 BinaryExpression 。您可以将 BinaryExpressionExpression.Lambda 调用封装到一个方法中并改为调用它(如 PredicateBuilder.And ),但这些都不像当前语法 IMO 那样干净。

关于C#重构lambda表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1438869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com