Finding the minimum number of moves to achieve equal array elements
The problem can be re-formulated into a much easier-to-conceptualize form.

Instead of


  Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.


say instead


  where a move is decrementing a single element by 1


Do you see why these are the same?  Suppose we start with 1, 2, 3.  Adding 1, 1, 0 produces 2, 3, 3.  Adding 0, 0, -1 produces 1, 2, 2, which is effectively the same thing. However many moves it takes to make 2, 3, 3 all equal is surely the same number of moves as it takes to make 1, 2, 2, all equal, or 0, 1, 1, or 1000, 1001, 1001, or whatever. Where you start is irrelevant. 

Once you know that the problem is actually "how many single decrements does it take to get all the elements equal?" the answer is easily seen. There is never any point in decrementing the smallest element, and every element will have to eventually equal the smallest element. Therefore the answer is: it's the sum of the differences of every element from the minimal element. 

That's a trivial program in C#:

var min = nums.Min();
return nums.Select(x =&gt; x - min).Sum();


Or alternatively, in a single line:

return nums.Sum() - nums.Length * nums.Min();


(Though as noted in the comments, this second version can overflow. Consider doing all the math in longs or BigIntegers if you're worried about overflow cases.)