Où est la méthode ToList ()? (IQueryable)
Si j'essaie cela, il va travailler:
var query = myContextObject.Users.Where(u=>u.Name == "John");
query.ToList();
Je suis en mesure d'appeler ToList
et beaucoup d'autres méthodes d'extension.
Mais si j'essaye ceci:
public List ConvertQueryToList(IQueryable query)
{
return query.ToList();
}
ToList
ne sera pas accessible, je devine que c'est parce que ToList
est une méthode d'extension, mais alors comment est-ce ToList
est attaché dans le premier exemple?
Est-il possible d'accéder à ToList
dans le second cas?
source d'informationauteur marcos.borunda
Vous devez vous connecter pour publier un commentaire.
Vous devez l'écrire comme:
Ce sera la cause de la
IQueryable<T>
de retour appropriéList<T>
depuis leÉnumérable.ToList()
méthode nécessite uneIEnumerable<T>
en entrée (qui travaille également avecIQueryable<T>
commeIQueryable<T>
hérite deIEnumerable<T>
).Cela étant dit, il n'y a vraiment aucune raison de l'utiliser de cette façon. Vous pouvez toujours appeler
ToList()
directement si vous avez besoin de créer unList<T>
- abstraction à l'intérieur d'une deuxième couche confond tout simplement l'API de plus.Si vous essayez de convertir un non-générique IQueryable interface, vous aurez besoin de faire quelque chose comme:
Ce serait alors appellent comme:
Alternativement, si vous voulez laisser ce non-générique (que je ne recommande pas), alors vous pouvez utiliser:
Le premier de vos exemples retourne un
IQueryable<T>
tandis que dans le second vous utilisezIQueryable
(sans le paramètre de Type Générique).Vous pouvez vérifier les deux complètement différentes interfaces ici et ici.
Ici est une extension de la méthode pour cela: