Linq to objects列表中的列表

Ric*_*zak 5 c# linq linq-to-objects

我有一份电影清单

List<Movie> MovieList
Run Code Online (Sandbox Code Playgroud)

我有一个选定类别的列表

List<string> SelCat
Run Code Online (Sandbox Code Playgroud)

并说我想从电影列表中选择它匹配2个类别,如下面的SQL语句:

SELECT * FROM MovieList WHERE MovieList.Category = 'Action' AND MovieList.Category = 'Drama'

我可以像linq那样接近linq:

var q = (from b in MovieList where b.Categories.Any(p=> SelCat.Contains(p)) select b);

但它的作用类似于OR查询,而不是AND.我想让它选择所有具有动作和戏剧类别的电影.

BTW:Movie.Categories是一个字符串列表.AND Movie.Categories必须包含SelCat中的项目.

如何使用Linq to Objects实现这一目标?

Jon*_*Jon 9

var q = from m in MovieList where SelCat.All(c => m.Categories.Contains(c))
Run Code Online (Sandbox Code Playgroud)

与您用英语描述问题的内容非常接近:

选择电影类别包含所有类别的电影SelCat.