Bonjour,
Voici un problème sur lequel je retombe souvent.
Etant donné une collection, comment créer une seconde collection dont chaque élément renvoi une expression basée sur un élément correspondant de la première collection.
La première solution qui vient à l'idée serait d'utiliser une énumération :
Le problème est que l'expression est réévaluée à chaque appel sur l'énumération. Si l'expression est lourde ça peut être gourmand en terme de performance. Pire, cette solution n'est pas utilisable si on renvoi dans Select() une nouvelle instance. Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MaPremiereCollection.Select(y=>expression(y));
car alors à chaque appel sur un élément de l'énumération on crée une nouvelle instance d'objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MaPremiereCollection.Select(y=>new NewObject(expression(y)));
On pourrait alors penser faire un ToList() pour fixer cette énumération dans une collection, mais alors celle-ci sera en décalage avec la collection de base si cette dernière à été mise à jour.
Ce que je pensais ensuite faire, c'est synchroniser la première collection et la seconde avec des événements, mais cela est fastidieux à mettre en place à chaque fois...
Auriez-vous une solution/un pattern pour ce problème ?
merci d'avance.
mathmax
Partager