IPAddress does not define an overload for ==, but it overrides Object.Equals, so the equality check should be:
public static bool AreEqual(IPEndpoint e1, IPEndpoint e2) { return e1.Port == e2.Port && e1.Address.Equals(e2.Address); }
If you are using linq, it is probably a good idea to create your own IEqualityComparer<IPEndpoint> to encapsulate this, since the various linq methods use one to compare elements.
source share