using System.Collections.Generic;
namespace ConsoleApplication1
public int ID { get; set; }
public string Subject { get; set; }
public int Rank { get; set; }
internal class FreeCourse : Course
internal class PaidCourse : Course
public decimal Fees { get; set; }
public static void Main(string[] args)
List<Course> courses = new List<Course>();
courses.Add(new FreeCourse
Subject = "LINQ Tutorials",
courses.Add(new FreeCourse
Subject = ".NET Threading Tutorials",
courses.Add(new PaidCourse
courses.Add(new PaidCourse
Subject = "Datagrid Tutorials",
var paidCourses = from course in courses.OfType<PaidCourse>()
var freeCourses = from course in courses.OfType<FreeCourse>()
Console.WriteLine("Paid Courses");
foreach (var course in paidCourses)
Console.WriteLine("\t" + course.Subject);
Console.WriteLine("Free Courses");
foreach (var course in freeCourses)
Console.WriteLine("\t" + course.Subject);