Quelle est la différence entre IQueryable<T> et IEnumerable<T> ?
Réponses
Trop de publicités?Voici ce que j'ai écrit sur un poste similaire (sur ce sujet). (Et non, je n'ai pas l'habitude de me citer, mais ce sont de très bons articles).
"Cet article est utile : IQueryable vs IEnumerable dans LINQ-to-SQL .
Je cite cet article : "Selon la documentation MSDN, les appels effectués sur IQueryable fonctionnent en construisant l'arbre d'expression interne à la place. "Ces méthodes qui étendent IQueryable(Of T) n'effectuent pas d'interrogation directe. Au lieu de cela, leur fonctionnalité consiste à construire un objet Expression, qui est un arbre d'expression qui représente la requête cumulative. "'
Les arbres d'expression sont une construction très importante en C# et sur la plate-forme .NET. (Ils sont importants en général, mais C# les rend très utiles). Pour mieux comprendre la différence, je vous recommande de lire les différences entre expressions et déclarations dans la spécification officielle de C# 5.0 ici. Pour les concepts théoriques avancés qui se ramifient en lambda calculus, les expressions permettent de prendre en charge les méthodes en tant qu'objets de première classe. La différence entre IQueryable et IEnumerable est centrée sur ce point. IQueryable construit des arbres d'expression alors que IEnumerable ne le fait pas, du moins pas en termes généraux pour ceux d'entre nous qui ne travaillent pas dans les laboratoires secrets de Microsoft.
Voici un autre article très utile qui détaille les différences d'un point de vue "push" et "pull". (Par "push" et "pull", je fais référence à la direction du flux de données. Techniques de programmation réactive pour .NET et C#
Voici un très bon article qui détaille les différences entre les lambdas d'instructions et les lambdas d'expression et qui aborde plus en profondeur les concepts des lambdas d'expression : Réexamen des délégués C#, des arbres d'expression et des instructions lambda par rapport aux expressions lambda. ."
- Réponses précédentes
- Plus de réponses