我有一张电影单子

List<Movie> MovieList

我有一个选定类别的列表
List<string> SelCat

假设我想从电影列表中选择与两个类别匹配的内容,如下面的sql语句:
SELECT * FROM MovieList WHERE MovieList.Category = 'Action' AND MovieList.Category = 'Drama'
我可以和Linq接近,就像这样:
var q = (from b in MovieList where b.Categories.Any(p=> SelCat.Contains(p)) select b);
但它的行为像一个或查询,而不是一个和。我要它选择所有有动作和戏剧类型的电影。
顺便说一句:电影。类别是一个字符串列表。和电影。类别必须包含selcat中的项。
如何使用linq to对象实现这一点?

最佳答案

var q = from m in MovieList where SelCat.All(c => m.Categories.Contains(c))

非常接近你用英语描述问题的方式:
选择电影类别包含SelCat中所有类别的电影。

08-17 10:24