using System.Collections.Generic;
public string StudentName { get; set; }
public string StudentEmail { get; set; }
public Student Student { get; set; }
public string Subject { get; set; }
public Student Student { get; set; }
public string Subject { get; set; }
public static void Main()
List<Student> lstStudents = new List<Student>();
StudentEmail = "john@stanford.edu",
StudentName = "John Wayne"
StudentEmail = "maya@stanford.edu",
StudentName = "Maya Agnes"
StudentEmail = "eric@stanford.edu",
StudentName = "Eric James"
var Ellen = new Student()
StudentEmail = "ellen@stanford.edu",
StudentName = "Ellen Page"
List<Enrolled> lstEnrolled = new List<Enrolled>();
var JohnMath = new Enrolled() { Student = John, Subject = "Math" };
var JohnScience = new Enrolled() { Student = John, Subject = "Science" };
var JohnEnglish = new Enrolled() { Student = John, Subject = "English" };
var MayaMath = new Enrolled() { Student = Maya, Subject = "Math" };
var EricMath = new Enrolled() { Student = Eric, Subject = "Math" };
var EricScience = new Enrolled() { Student = Eric, Subject = "Science" };
var EricSocial = new Enrolled() { Student = Eric, Subject = "Social" };
var EllenMath = new Enrolled() { Student = Ellen, Subject = "Math" };
var EllenScience = new Enrolled() { Student = Ellen, Subject = "Science" };
var EllenEnglish = new Enrolled() { Student = Ellen, Subject = "English" };
var EllenSocial = new Enrolled() { Student = Ellen, Subject = "Social" };
lstEnrolled.Add(JohnMath);
lstEnrolled.Add(JohnScience);
lstEnrolled.Add(JohnEnglish);
lstEnrolled.Add(MayaMath);
lstEnrolled.Add(EricMath);
lstEnrolled.Add(EricScience);
lstEnrolled.Add(EricSocial);
lstEnrolled.Add(EllenMath);
lstEnrolled.Add(EllenScience);
lstEnrolled.Add(EllenEnglish);
lstEnrolled.Add(EllenSocial);
List<Dropped> lstDropped = new List<Dropped>();
var JohnDropMath = new Dropped() { Student = John, Subject = "Math" };
var EricDropSocial = new Dropped() { Student = Eric, Subject = "Social" };
var EllenDropMath = new Dropped() { Student = Ellen, Subject = "Math" };
lstDropped.Add(JohnDropMath);
lstDropped.Add(EricDropSocial);
lstDropped.Add(EllenDropMath);
var result = lstEnrolled.Where(e => !lstDropped.Any(d => d.Student == e.Student && d.Subject == e.Subject))
Name = x.First().Student.StudentName.Split(' ').First(),
Subjects = string.Join(", ", x.Select(e => e.Subject))
Console.WriteLine($"{x.Name}\t{x.Subjects}");