如何解决为子属性创建 MethodCallExpression
有一个简化场景的工作示例:
//find all tasks with History item with id equals 117992
var exprString = "Id = 117992";
var innerLambda = DynamicExpressionParser.ParseLambda(typeof(History),typeof(bool),exprString);
var resultCallExpression = Expression.Call(
typeof(Enumerable),nameof(Enumerable.Any),new[] { typeof(History) },Expression.Property(givenTaskExpression,"Histories"),innerLambda
);
但是,我无法修改示例以根据低于一级的属性为我提供过滤器表达式。
请查看给定的图表。我有一个“任务”类型的给定表达式 (givenTaskExpression),现在我想生成一个结果表达式,该表达式使用筹码列表中的过滤器 lambda。
例如给我所有带有 Id = '1234' 芯片的机箱的任务
解决方法
类似的东西:
var exprString = "Id = '1234'";
var innerLambda = DynamicExpressionParser.ParseLambda(typeof(Chip),typeof(bool),exprString);
var chipsProp = Expression.Property(
Expression.Property(givenTaskExpression,nameof(Task.Case)),nameof(Case.Chips));
var resultCallExpression = Expression.Call(
typeof(Enumerable),nameof(Enumerable.Any),new[] { typeof(Chip) }
chipsProp,innerLambda
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。