这是我为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/