C# 数组 随机 排序

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

posted @ 2017-02-14 13:08  风吹云东星不动  阅读(7833)  评论(0编辑  收藏  举报