简体   繁体   English

LINQ select 列表,其中子列表的所有项目包含另一个列表

[英]LINQ select List where sub-list all items contains another list

I have a model with list items.我有一个带有列表项的 model。

public class Semester{
    public int Id { get; set; }
    public List<SemesterParent> Parents { get; set; }
}

public class SemesterParent{
    public int Id { get; set; }
    public int SemesterId { get; set; }
    public int ParentId { get; set; }
}

I have a list<int> of parentids .我有一个list<int>parentids I want to get semester list that Parents in parentids list.我想获得Parentsparentids名单中的semester名单。

For example例如

Semester{1,{}}
Semester{2,{}}
Semester{3,{1,2}}
Semester{4,{1}}
Semester{5,{2,4}}

When I have ParentIdes {1,2} the result is:当我有 ParentIdes {1,2}结果是:

Semester{3,{1,2}}
Semester{4,{1}}

I use this code.我使用此代码。

var parentIds =
            await _semesterTermStudentService.Select(m => m.IsAccept && m.StudentId == student.Id);
var semester=await _semesterService.FindAsync(m=>
             m.Parents.Any(y => parentIds.Contains(y.ParentId)));

You can do as below.您可以执行以下操作。 Here is the working code是工作代码

List<Semester> s = new List<Semester>();
var parentIds = new List<int> { 1, 2 };
var result = s.Where(x => x.Parents != null && x.Parents.Any() && x.Parents.All(y => parentIds.Contains(y.Id))).ToList();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM