int[] arrInt = new int[100]; for (int i = 0; i < 100; i++) { arrInt[i] = i; } arrInt = arrInt.OrderBy(c => Guid.NewGuid()).ToArray<int>(); foreach (var item in arrInt) { Console.WriteLine(item); } Console.ReadKey();
反編譯后
int[] arrInt = new int[100]; for (int i = 0; i < 100; i++) { arrInt[i] = i; } arrInt = (from c in arrInt orderby Guid.NewGuid() select c).ToArray<int>(); int[] array = arrInt; for (int j = 0; j < array.Length; j++) { int item = array[j]; Console.WriteLine(item); } Console.ReadKey();
實質
用C#3.0新增的Linq技術中的OrderBy方法排序,排序的依據是與原序列元素對應生成的一個“鍵”——Grid.NewGuid()方法返回的一個隨機32位不重復Guid字符串。因為每次生成的Guid字符串大小都不同,且大小與生成先后無關,所以按這個“鍵”排序后的整數序列的順序是隨機的。