我正在尝试学习 lambda 表达式的使用,因此即使在阅读了文档和其他各种相关文章之后仍然难以实现。因此,如果我想将以下循环转换为 lambda 表达式,那么我将如何去做,我只需要一种方法来了解 lambda 表达式是如何工作的。
代码:
var pc = Enumerable.Range(2, 100).ToList();
var j = 0;
while (j < pc.Count)
{
Console.WriteLine(pc[j]);
j++;
}
我正在尝试学习 lambda 表达式的使用,因此即使在阅读了文档和其他各种相关文章之后仍然难以实现。因此,如果我想将以下循环转换为 lambda 表达式,那么我将如何去做,我只需要一种方法来了解 lambda 表达式是如何工作的。
代码:
var pc = Enumerable.Range(2, 100).ToList();
var j = 0;
while (j < pc.Count)
{
Console.WriteLine(pc[j]);
j++;
}
Enumerable.Range(2, 100).ToList().ForEach(p => Console.WriteLine(p));
一步一步的解释
Enumerable.RangeIEnumarable<int>
从 2 开始,长度为 100。即。项目将是 2,3,4.....101。
.ToList()
将其转换IEnumerable
为List
. 为什么要转换?这样我们就可以ForEach
使用List
.
对你来说最重要ForEach()
。顾名思义,它对列表中的每个项目执行操作。在这里,列表的每个元素都被取出并放入运行时变量 p 中,该变量“转到”=> Console.WriteLine(p)
以在控制台上写入。
我知道这不是你问题的答案,但这是一个例子,我总是重新考虑 LINQ 是否真的是解决问题的最佳解决方案。我知道您只需要一个学习示例,但请记住,对于一个拿着锤子的人来说,一切看起来都像钉子......
foreach (var item in Enumerable.Range(2, 100))
{
Console.WriteLine(item);
}
这对我来说更容易理解,并且不会创建不必要的列表。
(希望我不会收到太多愤怒的评论......)
尝试
Enumerable.Range(2, 100).ToList().ForEach(n => Console.WriteLine(n))
但请注意,由于创建了额外的对象,通常 lambdas 很慢。不要在性能关键的应用程序中使用它们。
pc.ForEach(f => Console.WriteLine(f));
您不需要创建Enumerable.Range
.
var result = string.Join(Environment.NewLine, Enumerable.Range(2, total));
Console.Write(result);
pc.ForEach(j => Console.WriteLine(j));
你可以这样做:
Enumerable.Range(2, 100).ToList().ForEach(x => Console.WriteLine(x));
Enumerable.Range(2, 100).ToList().ForEach(n => Console.WriteLine(n));