<p>I have a list of n GUIDs and I need to hash them into a single value.  This value could be the size of a Guid object or the size of an Int32, it doesn't really matter, but it does need to be statistically unique (say with a probably similar to MD5).</p>

<p>So one approach could be to sort them, concatenate the bytes and take an MD5 hash of all the bytes... but this isn't very quick.</p>

<p>Another idea: I notice that it is fairly standard practice in .NET to implement the GetHashCode method of a composing object as the XOR of the hash codes of the composed objects.  Therefore could it be mathematically sensible to XOR my list of GUIDs?</p>

<p>Any ideas welcome!</p>

If you want the hash to be valid for the
set
(i.e. order doesn't matter) then XORing the hashcode of each GUID is a good choice.
If you've actually got a
sequence
of GUIDs and the order matters then I'd suggest using the same approach I wrote about
in another answer
- repeatedly add/multiply.
(Note that XORing the hashcodes probably won't get you the same answer as XORing the GUIDs themselves and then hashing the result. It may be, but that depends on the implementation of GUID.GetHashCode(). I'd hash each value and XOR the results together - aside from anything else, that's trivial to implement.)