j'avais posé une question sur la façon de compiler dynamiquement une requête LINQ avec toutes les propriétés d'un objet et houlgap avait été assez aimable pour me donner le code suivantLambda dynamique avec toutes les propriétés d'une propriété d'un objet
private static Func<MyEntity, bool> GenerateLambda(MyEntity _myEntity, PropertyInfo propertyInfo)
{
var instance = Expression.Parameter(propertyInfo.DeclaringType, "i");
var property = Expression.Property(instance, propertyInfo);
var propertyValue = Expression.Constant(propertyInfo.GetValue(_myEntity, null));
var equalityCheck = Expression.Equal(property, propertyValue);
return Expression.Lambda<Func<MyEntity, bool>>(equalityCheck, instance).Compile();
}
Cela fonctionne très bien si la propriété à interroger est directement un membre de l'objet mais pour moi il y a une propriété intermédiaire entre les deux. Par exemple Le délégué Func est pour un autre type, par ex. Func <ABCMyEntity,bool>
alors que MyEntity est membre de cet objet (ABCMyEntity.MyEntity). L'objet Propertyinfo transmis est membre de MyEntity. Je sais que cela semble terriblement confus mais je ne suis pas en mesure de mieux l'expliquer. (Peut-être parce que je ne suis pas un locuteur natif). Veuillez me demander si quelque chose n'est pas clair dans la question.
Il se poursuit de Constructing Dynamic LINQ queries with all properties of an object
Merci Tomas, je vais essayer ça maintenant !! – ganeshran