I have a list of movies
List<Movie> MovieList
and I have a list of selected categories
List<string> SelCat
And say I want to select from the movie list where it matches 2 categories, like the SQL statement below:
SELECT * FROM MovieList WHERE MovieList.Category = 'Action' AND MovieList.Category = 'Drama'
I can get kinda close with linq like so:
var q = (from b in MovieList where b.Categories.Any(p=> SelCat.Contains(p)) select b);
But it acts like an OR query, not an AND. I want it to select all movies that have a category of action and drama.
BTW: Movie.Categories is a List of string. AND Movie.Categories must contain items in the SelCat.
How do I achieve this with Linq to Objects?
var q = from m in MovieList where SelCat.All(c => m.Categories.Contains(c))
Quite close to what you would say describing the problem in English:
Select movies where the movie categories contain all the categories in SelCat
.
var SelectedCategories = List<string>();//list of selected categories
from movie in MovieList
join selCat in Categories.Where(SelectedCategories.Contains(selCat.Category)
on movie.category equals selCat.category
select movie
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With