1

Je suis nouveau à Linq s'il vous plaît me guider sur certaines choses de base.Linq, quelle est la différence entre renvoyer des données dans var, list, IEnumarable et IQueryable?

En lire quelques articles sur Linq. Certains auteurs remplissent des données dans var depuis une requête Linq, d'autres remplissent une liste d'objets de type personnalisés et d'autres remplissent des données dans IEnumerable et d'autres dans IQuryable. Je ne pouvais pas savoir ce qui est différent dans ces 4 et lequel devrait être utilisé dans quelle situation.

Je souhaite utiliser Linq to SQL. Que devrais-je utiliser?

Veuillez me guider. Merci pour votre aide et votre temps précieux.

+0

Demandez-vous, "qu'est-ce que linq?" http://stackoverflow.com/questions/471502/what-is-linq/471592#471592 –

Répondre

5

Eh bien, vous ne pouvez jamais déclarer qu'une méthode renvoie var - ce n'est valable que pour les variables locales. Cela signifie fondamentalement "compilateur, s'il vous plaît déduire le type statique de cette variable en fonction de l'expression sur le côté droit de l'opérateur d'affectation".

Habituellement, une requête LINQ to Objects renverra un IEnumerable<T> s'il retourne une séquence quelconque, ou une seule instance pour des choses comme First(). Une requête LINQ to SQL ou EF utilisera IQueryable<T> si elle souhaite que d'autres options de requête puissent s'appuyer sur la requête existante, les bits ajoutés étant analysés dans le cadre du processus de construction SQL. Alternativement, en utilisant IEnumerable<T> signifie que tout autre traitement est effectué côté client.

Plutôt que de se concentrer sur ce type de retour à utiliser, je vous suggère de lire sur les concepts fondamentaux de LINQ (et les améliorations linguistiques eux-mêmes, comme var) - cette façon, vous aurez une meilleure idée de pourquoi ces options existent, et quels sont leurs différents cas d'utilisation.

+0

Merci Jon, pouvez-vous s'il vous plaît me suggérer quelque chose à lire ou à regarder sur les concepts de base sur Linq. – haansi

+1

Eh bien, il existe divers livres spécifiques à LINQ (LINQ en action, Pro LINQ, etc.). Mon propre livre (C# dans Depth) va dans les détails en ce qui concerne les changements de langue et un peu de contexte sur le fonctionnement de LINQ to SQL, mais il ne couvre pas vraiment LINQ to SQL, etc. –

+0

La tâche "en utilisant IEnumerable signifie que tout traitement ultérieur est effectué côté client". votre moyen est sur le côté serveur, mais pas sur le côté DB, non? – haansi