Rya*_*yan 11 c# linq vb.net enumerable
我正在阅读MSDN杂志上关于在LINQ中使用Enumerable类生成随机数组的文章.本文使用VB.NET,我不能立即确定C#中的等价物是什么:
Dim rnd As New System.Random()
Dim numbers = Enumerable.Range(1, 100). _
OrderBy(Function() rnd.Next)
Run Code Online (Sandbox Code Playgroud)
Han*_*nto 20
该开发者融合VB.Net到C#转换器说,相当于C#代码为:
System.Random rnd = new System.Random();
IEnumerable<int> numbers = Enumerable.Range(1, 100).OrderBy(r => rnd.Next());
Run Code Online (Sandbox Code Playgroud)
为了将来参考,他们还有一个C#到VB.Net转换器.还有其他几种可用的工具.
Random rnd = new Random();
IEnumerable<int> numbers = Enumerable.Range(1, 100).OrderBy(r => rnd.Next());
Run Code Online (Sandbox Code Playgroud)
我最初认为这是一个坏主意,因为排序算法需要对数字进行多次比较,并且每次调用该数字的lambda时,它将获得相同数字的不同排序键.但是,它看起来只对列表中的每个元素调用一次,并存储该值以供以后使用.此代码演示了这一点:
int timesCalled = 0;
Random rnd = new Random();
List<int> numbers = Enumerable.Range(1, 100).OrderBy(r =>
{
timesCalled++;
return rnd.Next();
}
).ToList();
Assert.AreEqual(timesCalled, 100);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13082 次 |
| 最近记录: |