Si c'est fait en une ArrayList, vous devez créer un List<T> ou de tableau en premier. Ensuite, vous pouvez utiliser Contains:
//Use the appropriate type, of course.var ids = arraylist.Cast<string>().ToList();var tmp = users.Select(a => ids.Contains(a.UserID));
Tout en utilisant Contains sur la plaine ArrayList peut bien compiler, je m'attends à ce qu'il échoue au moment de l'exécution, en supposant users est un IQueryable<>.
Vous avez raison que cela ne fonctionne pas dans la plupart des cas. J'ai eu la conversion d'une liste d'éléments dans une chaîne délimitée et appel sur la chaîne. Ce qui n'est pas une solution infaillible que vous pouvez obtenir de faux positifs si vous ne faites pas attention. Je disais que l'utilisation d'un ArrayList ne fonctionne pas. À l'aide de la List<T> devrait être bien avec la plupart des fournisseurs LINQ, je crois. Non pas que l'OP a dit ce que le contexte est... J'ai utiliser ce code et il fonctionne. merci u Liste de tous<long> liste =new List<long>(); var query = de n, où les utilisateurs de la liste.Contient(n.ID), sélectionnez n ; Je crufted un échantillon rapide avec Jon du code ci-dessus et une chose intéressante pour moi, c'était écrit que la façon dont c'est le var tmp est de type IEnumerable<Boolean>, je pense à cause de la Contient. J'ai dû changer d'utiliser un Où, au lieu de les Contient de revenir une Liste du type de celle figurant dans la liste de tableaux, comme ceci: var tmp = utilisateurs.Où(a => id.Contient(un.UserID));
Si c'est fait en une
ArrayList
, vous devez créer unList<T>
ou de tableau en premier. Ensuite, vous pouvez utiliserContains
:Tout en utilisant
Contains
sur la plaineArrayList
peut bien compiler, je m'attends à ce qu'il échoue au moment de l'exécution, en supposantusers
est unIQueryable<>
.Je disais que l'utilisation d'un
ArrayList
ne fonctionne pas. À l'aide de laList<T>
devrait être bien avec la plupart des fournisseurs LINQ, je crois. Non pas que l'OP a dit ce que le contexte est...J'ai utiliser ce code et il fonctionne. merci u Liste de tous<long> liste =new List<long>(); var query = de n, où les utilisateurs de la liste.Contient(n.ID), sélectionnez n ;
Je crufted un échantillon rapide avec Jon du code ci-dessus et une chose intéressante pour moi, c'était écrit que la façon dont c'est le var tmp est de type IEnumerable<Boolean>, je pense à cause de la Contient. J'ai dû changer d'utiliser un Où, au lieu de les Contient de revenir une Liste du type de celle figurant dans la liste de tableaux, comme ceci: var tmp = utilisateurs.Où(a => id.Contient(un.UserID));
OriginalL'auteur Jon Skeet
OriginalL'auteur Reza
C'est la solution que j'ai utilisée.
OriginalL'auteur Nitesh