using System.Collections.Generic;
using System.Threading.Tasks;
public static void Main(string[] args)
List<Semester> s = new List<Semester>();
s.Add(new Semester { Id = 1, Parents = new List<SemesterParent>() });
s.Add(new Semester { Id = 2, Parents = new List<SemesterParent>() });
s.Add(new Semester { Id = 3, Parents = new List<SemesterParent> { new SemesterParent { Id = 1 }, new SemesterParent { Id = 2 } } });
s.Add(new Semester { Id = 4, Parents = new List<SemesterParent> { new SemesterParent { Id = 1 } } });
s.Add(new Semester { Id = 5, Parents = new List<SemesterParent> { new SemesterParent { Id = 2 }, new SemesterParent { Id = 4 } } });
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();
Console.WriteLine(JsonConvert.SerializeObject(result));
public List<SemesterParent> Parents{get; set; }
public class SemesterParent{
public int SemesterId{get;set;}
public int ParentId{get;set;}