Re: Pick two and swap!
If the data is in an array you could also use Array.Sort with a bunch of random numbers as the key
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Random r = new Random();
byte[] b = new byte[numbers.Count()];
r.NextBytes(b);
Array.Sort(b, numbers);
although for large array numbers using a byte as a random key might not be random enough.