using System.Collections.Generic;
public static void Main()
Patient pat = new Patient();
pat.Name = "Susie Jones";
PhoneNumber pNumber = new PhoneNumber();
List<PhoneNumber> phoneNumberList = pNumber.DatabasePhoneNumbers();
var numbers = phoneNumberList.FindAll(x=>x.Id==1);
pat.phoneNumbers=numbers;
Doctor doc = new Doctor();
doc.HireDate=DateTime.Now;
PhoneNumber docpNumber = new PhoneNumber();
List<PhoneNumber> docphoneNumberList = docpNumber.DatabasePhoneNumbers();
var doc_numbers = docphoneNumberList.FindAll(x=>x.Id==2);
doc.phoneNumbers=doc_numbers;
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
public class Entity:Address
public string Name { get; set; }
public class Person:Entity
public int Id {get; set;}
public Int32 Age {get; set;}
public List<PhoneNumber> phoneNumbers = new List<PhoneNumber>();
public virtual void Print()
Console.WriteLine($"{Name} is {Age} years old");
public class Patient : Person
public override void Print()
List<string> matchedNums = new List<string>();
foreach(PhoneNumber pnum in phoneNumbers.FindAll(x=>x.IsSMS==true))
matchedNums.Add(pnum.Number);
Console.WriteLine($"{Name} is {Age} years old and phone numbers are " + string.Join(',',matchedNums.ToArray()));
public class Doctor : Person
public DateTime HireDate {get; set;}
public override void Print()
List<string> matchedNums = new List<string>();
foreach(PhoneNumber pnum in phoneNumbers.FindAll(x=>x.IsSMS==true))
matchedNums.Add(pnum.Number);
if(string.IsNullOrEmpty(City))
Console.WriteLine($"{Name} is {Age} years old and they are missing the city and phone numbers are " + string.Join(',',matchedNums.ToArray()));
Console.WriteLine($"{Name} is {Age} years old and they live in {City} and phone numbers are " + string.Join(',',matchedNums.ToArray()));
public void PrintHireDate()
Console.WriteLine($"They were hired on "+ HireDate.ToString("MM/dd/yyyy"));
public string Number {get;set;}
public bool IsSMS {get;set;}
public PhoneNumber(int id, string number, bool isSMS)
public List<PhoneNumber> DatabasePhoneNumbers()
var result = new List<PhoneNumber>();
result.Add(new PhoneNumber(1, "(555) 555-1234", false));
result.Add(new PhoneNumber(1, "(555) 555-1568", true));
result.Add(new PhoneNumber(2, "(555) 555-2345", true));
result.Add(new PhoneNumber(2, "(555) 555-2356", true));
result.Add(new PhoneNumber(3, "(555) 555-3256", true));
result.Add(new PhoneNumber(4, "(555) 555-5256", true));
result.Add(new PhoneNumber(5, "(555) 555-5566", false));
result.Add(new PhoneNumber(5, "(555) 555-5666", true));