问题描述
在.NET/C#应用程序开发中,当前有一个泛型集合List<T>
,如何使用LINQ查询这个集合List中元素的某个属性值在另外一个集合中存在的子集合呢?
比如有类似的伪代码:
List<Genres> listofGenres = new List<Genre>() { "action", "comedy" });
var movies = _db.Movies.Where(p => p.Genres.Any() in listofGenres);
以上代码的解释:
listofGenres
代表的是一个电影种类的集合,当前有两种类型:动作片,喜剧片movies
是从数据库读取出来的电影列表,并且需要使用LINQ
的Where()
方法来筛选电影列表中每部电影的种类在listofGenres
集合中。
方案一
使用LINQ
的Intersect(...)
方法,如下:
var movies = _db.Movies.Where(p => p.Genres.Intersect(listOfGenres)).Any();
或者
var movies = _db.Movies.Any(p => p.Genres.Intersect(listOfGenres));
方案二
使用LINQ
的Contains(...)
方法,如下:
var movies = _db.Movies.Where(p => p.Genres.Any(x => listOfGenres.Contains(x));
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册