using System.Collections.Generic;
public string name{get; set;}
public string gender{get; set;}
public DateTime DOB{get; set;}
public class Doctor : Person
public string Specilized{get; set;}
public Boolean isdoctor= true;
public class Patient : Person
public string Affected{get; set;}
public void Find<T>(List<T> personlist,string Name)
if(personlist[0].GetType().ToString() == "Doctor")
var doclist = personlist.Cast<Doctor>().ToList();
var namefilterlist = doclist.Where(x => x.name.Contains(Name));
foreach(var namefilter in namefilterlist)
Console.WriteLine("Doctor Name: {0}",namefilter.name);
Console.WriteLine("Doctor Specilized in : {0}",namefilter.Specilized);
var patlist = personlist.Cast<Patient>().ToList();
var patfilterlist = patlist.Where(x => x.name.Contains(Name)).ToList();
foreach(var namefilter in patfilterlist)
Console.WriteLine("Patient Name: {0}",namefilter.name);
Console.WriteLine("Patient Affected : {0}",namefilter.Affected);
public static void Main()
List<Doctor> docnamelist = new List<Doctor>();
Doctor dc = new Doctor();
dc.DOB = Convert.ToDateTime("10-11-1989");
Doctor dc1 = new Doctor();
dc1.DOB = Convert.ToDateTime("10-11-1989");
dc1.Specilized = "Child";
Finder fdr = new Finder();
fdr.Find<Doctor>(docnamelist , "Ven");
List<Patient> patnamelist = new List<Patient>();
Patient pat = new Patient();
pat.DOB = Convert.ToDateTime("10-11-2018");
Patient pat1 = new Patient();
pat1.DOB = Convert.ToDateTime("10-11-1968");
fdr.Find<Patient>(patnamelist,"Krish");