As Jasper points out, you are missing a generic constraint:
public class CommonFilter<T> where T : IEquatable<T>
Whats not explained in the other answer is why its needed.
Bear in mind that the compiler needs to resolve the call s?.Equals(data) at compile time. In your code the compiler knows nothing about T and therefore resolves the call to the only possible candidate for any T: object.Equals which defaults to reference comparison.
If, on the other hand, you define the constraint then the compiler knows that any given T must implement the more specific IEquatable<T>.Equals and will resolve the call to that method.
If defining the constraint is a breaking change or you simply can't implement it because you also need to process data where reference equality is appropiate then you could branch inside GetBy on whether T implements IEquatable<T> or not, Type checking a generic type is normally a red flag but it could be justifiable in this particular scenario.
If possible, I prefer the first option because that way you specifically forbid using GetBy with types that do not implement IEquatable<T>.