List .Contains Expression Tree
我想建立一个等于预期的表达式……
Expression<Func> expected = (ReferencedEntity referencedEntity) => foreignKeys.Contains(referencedEntity.Id); Expression<Func> actual;
foreignKeys类型是List
这是我到目前为止,我认为它将使用Expression.Call()方法,但不确定如何去做。
ParameterExpression entityParameter = Expression.Parameter(typeof(TReferencedEntity), "referencedEntity"); MemberExpression memberExpression = Expression.Property(entityParameter, "Id"); Expression convertExpression = Expression.Convert(memberExpression, typeof(object)); //This is becuase the memberExpression for Id returns a int. //Expression containsExpression = Expression.Call(???? //actual = Expression.Lambda<Func>(????, entityParameter);
谢谢你的帮助。
如果没有塞缪尔的建议,这是我无法做到的解决方案……
/// /// /// /// /// private Expression> BuildForeignKeysContainsPredicate(List
我不知道解决方案,但我知道你怎么能得到它。 创建一个虚拟函数,它接受一个Expression
并将它传递给你的lambda。 使用调试器,您可以检查编译器如何为您创建表达式。