this ... MSDN page, IQueryable(Of T) Interface. Pouvez-vous mieux expliquer pourquoi nous avons besoin d'une interface de marqueur qui n'ajoute aucune méthode sur IEnumerable?Expliquer en petits mots pourquoi IQueryable <T> est nécessaire
Répondre
Il étend IEnumerable
, IQueryable
et IEnumerable<T>
. Il peut ne pas avoir de méthodes propres, mais il agrège ces trois autres interfaces en une seule, de sorte que vous n'avez pas à les traiter séparément.
IQueryable<T>
est nécessaire car il définit un contrat requis pour un fournisseur LINQ. La plupart des méthodes d'extension disponibles sur IQueryable<T>
sont conçues pour accepter des expressions plutôt que des délégués.
Ceci est important car un fournisseur LINQ aura besoin d'analyser l'arbre d'expression plutôt que d'appeler un délégué.
IQueryable<T>
s'étend également IQueryable
. Fondamentalement, c'est un IQueryable
qui peut être énuméré d'une manière fortement typée. (Les deux IQueryable
et IEnumerable<T>
déjà étendu IEnumerable
, il est donc de ne pas ajouter quoi que ce soit sur ce front.)
Maintenant, ayant un IQueryable
fortement typé permet LINQ to SQL (etc) pour être fortement typé - sinon vous pourriez ne pas écrire Where
clauses etc sans casting. Les méthodes LINQ impliquées sont dans le type Queryable
, reflétant en grande partie les méthodes Enumerable
mais prenant arbres d'expression au lieu des délégués. (Si vous n'avez jamais utilisé d'arborescence d'expression auparavant, ce sont essentiellement des structures de données décrivant le code - alors qu'un délégué est le code lui-même, donc vous pouvez exécuter un délégué, mais vous pouvez examiner un arbre d'expression faire.)
Utilisez IQueryable si vous souhaitez traduire une requête linq vers une arborescence d'expression (System.Linq). D'un arbre d'expression, vous pouvez facilement traduire votre requête LINQ à une autre langue (SQL pour LINQ to SQL Un autre exemple classique est Linq Google où vous voulez que cette requête.
var searchResult = from result
in Google.Repository
where result.Equals("i love linq")
select result;
Pour traduire cette url:
http://www.google.com/search?hl=en&q=i+love+linq&aq=f&oq=&aqi=g10
Ensuite, vous analysez la page pour obtenir les résultats
- 1. Possible de convertir IQueryable <Derived> en IQueryable <Base>?
- 2. Personnalisation IQueryable <T>
- 3. Qu'est-ce qu'un exécutable relogeable et pourquoi est-il nécessaire?
- 4. Mocking et IQueryable <T>
- 5. Impossible de convertir implicitement le type IEnumerable <T> en IQueryable <T>
- 6. Convertir le jeu de données en IQueryable <T> ou IEnumerable <T>
- 7. WPF IEnumerable <T> vs IQueryable <T> comme DataSource
- 8. .NET2.0 Remoting - Pourquoi l'enregistrement d'un clientChannel est-il nécessaire?
- 9. Pourquoi Predicate <> est-il scellé?
- 10. Création de modèles utilisant IQueryable <T>
- 11. Cette IQueryable <T> méthode d'extension n'a pas de traduction pris en charge pour SQL :(
- 12. Les référentiels doivent-ils implémenter IQueryable <T>?
- 13. <% $, <% @, <% =, <% # ... quel est le problème?
- 14. PHP MySql Où Field = <4 mots
- 15. Html.BeginForm() est-il nécessaire?
- 16. KillTimer est-il nécessaire?
- 17. Comment le changement Liste <T> données IQueryable <T> données
- 18. Ma syntaxe IQueryable est-elle correcte?
- 19. Enregistrer IList <T> ou IQueryable <T> vers Excel - C#
- 20. Est-ce que c'est nécessaire?
- 21. Comment lancer un IEnumerable <t> ou IQueryable <t> vers un EntitySet <t>?
- 22. expliquer la commande en utilisant
- 23. Comment puis-je convertir IQueryable <string> en un tableau de chaînes?
- 24. Pouvez-vous expliquer pourquoi DirectoryInfo.GetFiles produit cette IOException?
- 25. Qu'est-ce que je fais de mal avec IQueryable <T>?
- 26. Est-ce que l'échec/le succès/l'échec de la portée de D est nécessaire?
- 27. Effectuez .Select() sur IQueryable avec la liste de Func <T, string> délégués
- 28. Vitesse pour les petits projets
- 29. les variables LINQ IQueryable
- 30. Est-il nécessaire d'utiliser InitCommonControlsEx() et InitCommonControls()?
il a été 7 ans, mais depuis l'offre par l'auteur estimable a été fait, je vais le prendre jusqu'à:. est une preuve factice explication d ation d'arbres d'expression possible? peut-être pour le bénéfice des futurs lecteurs plus que moi, coz Google est attirant :) – BKSpurgeon
@BKSpurgeon: Je vais ajouter un peu, mais ce n'est pas vraiment le point de la question, donc je pense que vous seriez mieux avec un tutoriel pour être honnête. –