SweepMultiByChannel sweeps for ALL overlaps (ie all components), so it’s possible to get the same actor twice through multiple components.
So you could have a custom trace channel for this purpose and make sure it’s assigned to overlap/block only on the root component of the class you are looking for.
Or make a TArray of actor pointers using AddUnique and then make your structs after the sweep is done being sorted (but I don’t know immediately what the most performant variant of that method would be)