internal class Patient
{
public int PType { get; set; }
public string PatientName { get; set; }
}
internal class PatientType
{
public int PType { get; set; }
public string PTypeName { get; set; }
}
var result2 = patients.GroupJoin(
patientTypes,
p => p.PType,
t => t.PType,
(p, t) => t.DefaultIfEmpty()
.Select(x => new { p.PatientName, x?.PTypeName }))
.SelectMany(x => x).ToList();