这是我为List中的第一个N元素随机排序的代码:

int upper = 1;
if (myList.Count > 1)
{
    Random r = new Random();
    upper = Math.Min(maxNumberOfPackets, myList.Count);
    for (int i = 0; i < upper; i++)
    {
        int randInd = r.Next(i, myList.Count);
        var temp = myList[i];
        myList[i] = myList[randInd];
        myList[randInd] = temp;
    }
}


好了,现在我有“必要”,只能使用Enumerable(出于某种原因;因此,我不想将其转换为Enumerable)。

就您所知,我可以对Enumerable做同样的事情吗?我认为痛苦是进入X位置的元素...

我很好奇...

最佳答案

IEnumerable表示“仅前进游标”,它可以返回流式传输的数据(例如,从数据库中)。因此,能够订购一个可枚举的对象(无论是否随机),都意味着您需要对其进行缓存,这仅仅是因为您需要具有所有值才能确定其排序。也就是说,您可以使用Enumerable.OrderBy运算符,但是同样,它将在后台为您进行缓存。

var r = new Random();

IEnumerable sorted = myList.OrderBy(i => r.Next());

关于c# - 我用来随机排序列表。我可以对Enumerable做同样的事情吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10977402/

10-16 05:13