J'ai le code quelque chose comme cela dans une mise en œuvre IRepository dans LINQ to Sql:utilisation délégué pour la projection dans LINQ to SQL
var newlist = from h in list where h.StringProp1 == "1"
select new MyBusinessBO{
firstProp = h.StringProp1,
secondProp = h.StringProp2
};
La projection dans MyBusinessBO n'est pas difificult mais quand l'objet d'affaires possède de nombreuses propriétés de la projection le code devient très long. De plus, comme la projection peut se produire à plusieurs endroits dans le dépôt, nous brisons le principe DRY.
Existe-t-il un moyen d'extraire la projection ou de la remplacer par un délégué?
I.e. remplacer le code
firstProp = h.StringProp1,
secondProp = h.StringProp2
avec quelque chose de réutilisable?
Une approche très similaire à ckknight ci-dessus, mais il semble que ce soit meilleur pour créer un code plus clair. Il a la projection dans une fonction réutilisable séparée qui peut simplement être transmise. ckknight a eu la réponse mais David B, vous avez travaillé de manière à ce que je sois où je veux être. J'ai répondu à ckknight et accepté celui-ci. – Redeemed1
Soyez averti: Il est extrêmement important d'utiliser la syntaxe exacte indiquée ici pour la fonction 'GetExpr()'. Si vous avez une méthode de conversion DTE préexistante que vous avez utilisée à plusieurs endroits comme 'public DTE Convert (entité entité)' que vous essayez de convertir en une expression réutilisable, vous devez supprimer le paramètre 'entity' et créer le lambda comme indiqué ici - sinon, CHAQUE colonne de cette table sera récupérée. –