Je voudrais construire une expression qui correspondrait à prévu …
Expression<Func> expected = (ReferencedEntity referencedEntity) => foreignKeys.Contains(referencedEntity.Id); Expression<Func> actual;
foreignKeys est un type List
Voici ce que j’ai jusqu’à présent et je pense qu’il utiliserait la méthode Expression.Call () mais ne sait pas exactement comment s’y prendre.
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);
Merci pour ton aide.
Voici la solution que je n’aurais pas pu faire sans la suggestion de Samuel …
/// /// /// /// /// private Expression> BuildForeignKeysContainsPredicate(List
Je ne connais pas la solution, mais je sais comment vous pouvez l’obtenir. Créez une fonction factice qui prend une Expression
et transmettez-la à votre lambda. Et en utilisant un débogueur, vous pouvez examiner comment le compilateur a créé l’expression pour vous.