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字符串大小都不同,且大小与生成先后无关,所以按这个“键”排序后的整数序列的顺序是随机的。