Check if array A contains all elements of array B and vice versa irrespective of order
You can check this by keeping track of each value in a dictionary: adding one for items in the first array, subtracting one for items in the second array and finally checking that all tracked values are zero.

Also, implemented this way, there is no need to make the method array- or int-specific.

public static bool CheckEquality&lt;T&gt;(IEnumerable&lt;T&gt; first, IEnumerable&lt;T&gt; second)
{
    var dictionary = new Dictionary&lt;T, int&gt;();

    Action&lt;IEnumerable&lt;T&gt;, int&gt; setCounts = (items, change) =&gt;
    {
        foreach (var item in items)
        {
            int count;
            // if not found, count will be the default value of 0
            dictionary.TryGetValue(item, out count);
            dictionary[item] = count + change;
        }
    };

    setCounts(first, +1);
    setCounts(second, -1);

    return dictionary.Values.All(value =&gt; value == 0);
}


The code is more complicated than sorting arrays, but it's also \$O(n)\$.