【发布时间】:2010-12-04 12:57:27
【问题描述】:
我正在使用此代码生成随机数字序列:
var sequence = Enumerable.Range(0, 9).OrderBy(n => n * n * (new Random()).Next());
在我需要多个序列之前一切正常,在这段代码中我调用了 10 次例程,结果是我的问题,所有序列都是相等的。
int i = 0;
while (i<10)
{
Console.Write("{0}:",i);
var sequence = Enumerable.Range(0, 9).OrderBy(n => n * n * (new Random()).Next());
sequence.ToList().ForEach(x=> Console.Write(x));
i++;
Console.WriteLine();
}
有人可以告诉我如何实际生成不同的序列吗?希望使用 LINQ
【问题讨论】:
-
如果
OrderBy确实多次调用键选择器(我在文档中没有找到关于是否保证只调用一次的任何内容)您的代码将出现错误,因为那时比较器合同将是违反了。