Skip to main content

C# Calculate Hash of List<T>

Here's a quick method that will generate a hash from a List of objects:

public int GetHashCodeOfList<T>(IEnumerable<T> list)
{
    List<int> codes = new List<int>();
    
    foreach (T item in list)
    {
        codes.Add(item?.GetHashCode() ?? 0);
    }
    
    codes.Sort();
    
    int hash = 0;
    
    foreach (int code in codes)
    {
        unchecked
        {
            hash *= 251; // multiply by a prime number
            hash += code; // add next hash code
        }
    }
    
    return hash;
}