2010-05-08 14 views

Répondre

1

Pour une collection en lecture seule, vous pouvez utiliser ReadOnlyCollection<T>. La fonctionnalité FindAll fournit List s peut être acquise sur d'autres types en utilisant LINQ.

2

Cela dépend.

  • IEnumerable<T> minimise le couplage entre le code appelant et l'implémentation du référentiel. Mais tout autre traitement (par exemple tri) doit être effectué en cours.
  • IQueryable<T> permet d'ajouter d'autres opérations, qui peuvent (en fonction de l'implémentation du référentiel) être effectuées sur le magasin de données sous-jacent.

Puisque vous pouvez convertir facilement entre l'une de ces (il y a une méthode d'extension AsQueryable qui permet à un IEnumerable<T> à convertir en un IQueryable<T> pour le typage, mais le traitement est bien sûr encore fait en mémoire).

Personnellement, j'aime les avantages potentiels que donne IQueryable<T>, même si un référentiel non basé sur LINQ ne peut pas en tirer bénéfice maintenant. D'autre part YAGTNI.

1

J'utilise toujours IEnumerable, parce que c'est le type le plus petit possible à retourner, donc vous ne donnez pas au client les choses dont il n'a pas besoin