linq - 如何使用多个二进制表达式条件和包含条件创建动态 LINQ 表达式
问题描述
我想为这种查询创建一个动态 LINQ 表达式
people.Where(x => x.Name="Some_Name" && x.Age>60 && x.ChildIds.Contains("Some_Id"));
我已经做的是填充我的List<BinaryExpression>
. List<BinaryExpression>
包含x.Name="Some_Name"
和x.Age>60
。_
我的问题现在与x.ChildIds.Contains("Some_Id")
. 我一直在寻找一种动态创建Contains
表达式的方法,这就是我得到的:
Expression.Call(memberExpression, "Contains", null, constantExpression)
但这会返回 aMethodCallExpression
并且我无法附加到我的List<BinaryExpression>
我想将contains
表达式附加到的BinaryExpression
原因是因为这就是我做&&
LINQ 部分的方式
var aggregatedExpressions = binaryExpressions.Aggregate((x, y) => Expression.AndAlso(x, y));
如果我无法将 Contains 表达式附加到 Binary Expression 中,如何将 Contains 聚合MethodCallExpression
到 myaggregatedExpressions
中,以便以这种方式编写?
x.Name="Some_Name" && x.Age>60 && x.ChildIds.Contains("Some_Id")
解决方案
我现在要关闭这个。我已经弄清楚如何聚合MethodCallExpressions
aggregatedExpressions = Expression.AndAlso(aggregatedExpressions, methodCallExpression);
推荐阅读
- flutter - 导入的 mdi 图标未在颤振项目中呈现
- computer-vision - 使用 YOLOv4 进行紧急和非紧急车辆分类
- javascript - js scrollIntoView() 后,asp.net 页面不断重新加载
- npx - 运行预提交 husky 脚本时未找到 Npx
- jenkins - 如何摆脱嘈杂的警告“没有找到合适的检查发布者”
- python - 如何在 Pyinstaller exe 文件中添加发布者名称
- c# - NetServerGetInfo 返回错误 5(拒绝访问)
- python - 对 Python 中带有 Pandas 的多列 groupby 操作的含义感到困惑
- javascript - 满足 API 条件时如何在 Vue.js 中显示组件?
- amazon-web-services - 无法将 Kubernetes pod 连接到 RDS 数据库