我试图理解以下LINQ查询的自定义排序逻辑:
var random = new Random();
var cnt = Enumerable.Range(0, 10).OrderBy(i => random.NextDouble()).ToList();
Run Code Online (Sandbox Code Playgroud)
这种比较的内在逻辑是什么?我如何比较random.NextDouble()内部使结果列表总是不同?
它相当于:
var cnt =
Enumerable.Range(0, 10)
.Select(i => new { i, rand = random.NextDouble() }) //"weave" the random temporary
.OrderBy(x => x.rand) //sort
.Select(x => x.i) //remove it
.ToList();
Run Code Online (Sandbox Code Playgroud)
随机值在逻辑上成为列表的一部分.
作为实现细节(从.NET 2.0到4.5),OrderBy实现排序键,以便为每个元素精确评估一个.它的性能和(在您的情况下)正确性.
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |