2010-06-24 5 views
0

J'ai quelques méthodes dans mon BLL qui vont chercher des enregistrements de base de données et le transmettre à l'interface utilisateur pour la liaison aux données des contrôles tels que Gridview ou ...
je pouvais choisir mon type de données de retour des méthodes si IQueryable<t> ou Ilist<t>.
Ma question est celle qui serait la meilleure pour moi et pourquoi? En fait, je ne connais pas la différence entre ces deux types et je ne sais pas lequel est le meilleur pour quelles situations?IQueryable <t> Ou IList <t>

Merci

Répondre

5

La différence est que IList<T> représente une liste réelle des résultats. Il aura été "matérialisé" - récupéré de la base de données, en mémoire. (En théorie, il est juste une interface bien sûr - il pourrait différer encore tout ...)

IQueryable<T> représente une requête - vous pouvez toujours composer des bits de requête supplémentaires après, par exemple. Vous pouvez ensuite évaluer la requête en demandant les résultats. Ceci utilisera l'exécution différée, demandant seulement des résultats quand il en a réellement besoin. Quant à ce que vous devriez retourner ... si vous voulez simplement vous lier directement à l'interface utilisateur, il peut être judicieux de le convertir en liste, pour avoir plus de contrôle sur la requête. réalisé. D'un autre côté, si vous voulez être en mesure de modifier la requête, l'utilisation de IQueryable<T> donnera plus de flexibilité à l'appelant.

+0

Merci pour l'explication. J'ai moi aussi compris et je chercherais l'exemple le plus simple en mettant en œuvre à la fois les choses qui montreront la différence entre la situation spécifiée ci-dessus. Je ne sais pas comment implémenter des interfaces dans les classes. c'est-à-dire que je sais ce qu'est l'interface et quelles fonctionnalités fournissent-elles. Mais je ne sais pas comment les utiliser. par exemple. Interface IDisposable, je sais ce qu'il va faire lors de la mise en œuvre mais comment mettre en œuvre est mon problème de la même manière cette interface IQueryable ainsi –

+0

@Shantanu: Vous ne devriez certainement pas mettre en œuvre 'IQueryable ' vous-même. C'est ce que LINQ to SQL (ou quoi que ce soit) est pour. –

+0

Pourriez-vous s'il vous plaît fournir un exemple, pourrait être un lien représentant leur mise en œuvre et la différence entre les deux. Ce serait une grande aide –

0

Je propose ICollection ou IList

IQueryable - fournit des fonctionnalités pour évaluer des requêtes sur une source de données spécifique dans laquelle le type de données est connu.

En tout temps, vous pouvez appeler ICollection.AsQueryable().

Questions connexes