[LINQ].NET/C#应用程序开发中如何使用LINQ查询集合中元素的某个属性值在另外一个集合中存在的子集?

C#开发 作者: Rector 437阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在.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是从数据库读取出来的电影列表,并且需要使用LINQWhere()方法来筛选电影列表中每部电影的种类在listofGenres集合中。

方案一

使用LINQIntersect(...)方法,如下:

var movies = _db.Movies.Where(p => p.Genres.Intersect(listOfGenres)).Any();

或者

var movies = _db.Movies.Any(p => p.Genres.Intersect(listOfGenres));

方案二

使用LINQContains(...)方法,如下:

var movies = _db.Movies.Where(p => p.Genres.Any(x => listOfGenres.Contains(x));

阅读了该文章的人还浏览了...

本文永久链接码友网 » [LINQ].NET/C#应用程序开发中如何使用LINQ查询集合中元素的某个属性值在另外一个集合中存在的子集?

发布于: 2018-04-23 16:37:17
分享扩散:

文章评论

获取验证码