J'ai eu une dispute avec un collègue à propos de l'utilisation de LINQ sur des objets (IEnumerable, pas IQueryable) dans notre code C#. J'utilisais LINQ, et il a dit que nous ne devrions pas utiliser le code d'un fournisseur externe (Microsoft) dans notre code, mais que nous devrions plutôt l'encapsuler nous-mêmes dans notre propre couche d'abstraction.
Maintenant, je comprends cette méthodologie pour une utilisation où vous avez une dll d'une tierce partie sans nom qui pourrait faire faillite la semaine prochaine, ou lorsque vous traitez avec des appels de base de données (c'est-à-dire en renvoyant un fournisseur de données commun, plutôt qu'un spécifique à SQL ou Oracle), mais à mon avis, la syntaxe LINQ est trop jolie/élégante/lisible pour que Microsoft l'abandonne dans les 10 prochaines années. Il est aussi susceptible d'être abandonné que la fonctionnalité ToString("Hello {0}", firstName);.
Je pourrais arrêter de discuter et mettre en place notre propre bibliothèque LINQ qui appelle les méthodes LINQ standard en interne, mais n'est-ce pas exagéré ? De plus, je pourrais seulement utiliser les méthodes d'extension, je n'ai aucune idée de comment encapsuler ceci :
from e in employees
select new { e.Name, e.Id };
Quel serait votre argument, pour ou contre l'utilisation de LINQ sur des objets (les méthodes d'extension IEnumerable) ?