Hi Shanna
In your action flow attached, Judge by aggerate name is GetUserById, I assumed it only gets one record,
So I don't understand why you need a loop.
If you want to get all duplicated data, As I mentioned before use an Advanced SQL like below.
SELECT User1.*
from {User} as User1
Inner join
(Select {User}.[HomeTown],{User}.[Preference]
from {User}
group by {User}.[HomeTown],{User}.[Preference]
having count({User}.[Id]) >1
) as User2
on User1.[HomeTown] =User2.[HomeTown]
and User1.[Preference] =User2.[Preference]
And if the Maches Entity and User Entity has the same structure,
You can call CreateOrUpdatedMaches action in the loop
Kind Regards