{
'Service Line Managers Display Name':cmbUserDetailsLServiceLineManager.Selected.DisplayName
}
);

You’re almost right
This happens because Patch() with Defaults() always creates a new record.
To prevent duplicates, you can check if the email already exists using LookUp() before inserting
If(
IsBlank(
LookUp(
'My Line Managers List',
'Service Line Managers Email' = cmbUserDetailsLServiceLineManager.Selected.Mail
)
),
Patch(
'My Line Managers List',
Defaults('My Line Managers List'),
{
'Service Line Managers Email': cmbUserDetailsLServiceLineManager.Selected.Mail,
'Service Line Managers Display Name': cmbUserDetailsLServiceLineManager.Selected.DisplayName
}
),
Notify("This email already exists in the list.", NotificationType.Warning)
)
This ensures that a new item is created only if the email doesn’t already exist in the list.
As a best practice, I would recommend enabling “Enforce unique values” on the Service Line Managers Email column in SharePoint. This prevents duplicates at the data source level as well, even if multiple users submit simultaneously.
Note : Be aware of case sensitivity.
Lower('Service Line Managers Email') = Lower(cmbUserDetailsLServiceLineManager.Selected.Mail)