Linq to objects Liste dans liste
J'ai une liste de films
List<Movie> MovieList
et j'ai une liste de catégories sélectionnées
List<string> SelCat
Et dire que je veux sélectionner à partir de la liste de films où elle correspond à 2 catégories, comme l'instruction SQL ci-dessous:
SELECT * FROM MovieList WHERE MovieList.Category = 'Action' AND MovieList.Category = 'Drama'
Je peux obtenir un peu près avec linq comme suit:
var q = (from b in MovieList where b.Categories.Any(p=> SelCat.Contains(p)) select b);
Mais il agit comme un OU une requête, pas un ET. Je le veux pour sélectionner tous les films qui ont une catégorie de l'action et de drame.
BTW: Film.Catégories est une Liste de chaîne de. ET Film.Les catégories doivent contenir des éléments dans le SelCat.
Comment puis-je réaliser cela avec Linq to Objects?
- MovieList.Catégorie = 'Action' ET MovieList.Catégorie = "Drame", de ne pas vous dire MovieList.Catégorie = "Action" OU MovieList.Catégorie = "Drame"
- Non, MovieList.Catégories est une List<string>
- Vous voulez trouver tous les films d'ACTION et de DRAME? Donc, un film qui n'a que le DRAME dans ses catégories n'est pas celui que vous voulez?
- Oui. Tous les films d'action ET de drame. ou ce qui est dans le SelCat liste de chaîne de caractères.
Vous devez vous connecter pour publier un commentaire.
Assez proche de ce que vous diriez à décrire le problème en anglais:
Sélectionner des films où le film catégories contiennent toutes les catégories en
SelCat
.Si vous voulez que le film du match tous de l'intéressant catégories (c'est à dire toutes les catégories de
SelCat
sont présents dansmovie.Categories
), vous pouvez le faire:D'autre part, si vous voulez que le film du match atleast 2 des catégories sélectionnées:
SelCat
.rappelez-vous la différence entre
.All()
et.Any()
Un peu compliquée:
essayer cette
viens de faire une intersection suivie par l'exception.
il fonctionne, je suis désolé j'ai eu à l'écrire dans vb.