using System.Collections.Generic;
public static void Main()
IList<Student> studentList = new List<Student>()
new Student() { StudentID = 1, StudentName = "Don", Age = 18, StandardID = 1, Courses = new List<Course>(){new Course{Name="Math"}, new Course {Name="Sci"}}} ,
new Student() { StudentID = 2, StudentName = "Steve", Age = 21, StandardID = 1, Courses = new List<Course>(){new Course{Name="Math"}, new Course {Name="Sci2"}}} ,
new Student() { StudentID = 3, StudentName = "Bill", Age = 18, StandardID = 2, Courses = new List<Course>(){new Course{Name="Math"}, new Course {Name="Sci2"}}} ,
new Student() { StudentID = 4, StudentName = "Ram" , Age = 20, StandardID = 2, Courses = new List<Course>(){new Course{Name="Math"}, new Course {Name="Sci2"}}} ,
new Student() { StudentID = 5, StudentName = "Ron" , Age = 21, Courses = new List<Course>() }
var results = studentList.Where(s=> s.Courses.Any(c=>c.Name=="Sci2"))
.Select(s => new {s, c = s.Courses.Where(c=>c.Name=="Sci2")});
foreach (var o in results) {
Console.WriteLine(o.s.StudentName);
Console.WriteLine(" " + o.c.First().Name);
public int StudentID { get; set; }
public string StudentName { get; set; }
public int Age { get; set; }
public int StandardID { get; set; }
public List<Course> Courses {get;set;}
public string Name {get;set;}