C# 循环的Lambda表达式转换以显示列表
我正在尝试学习lambda表达式的使用,因此在阅读文档和其他各种相关文章之后,仍然难以实现。 所以,如果我想将下面的循环转换为lambda表达式,那么我将如何进行转换,我只需要一种方法来了解lambda表达式是如何工作的。C# 循环的Lambda表达式转换以显示列表,c#,list,lambda,functional-programming,C#,List,Lambda,Functional Programming,我正在尝试学习lambda表达式的使用,因此在阅读文档和其他各种相关文章之后,仍然难以实现。 所以,如果我想将下面的循环转换为lambda表达式,那么我将如何进行转换,我只需要一种方法来了解lambda表达式是如何工作的。 代码: var pc = Enumerable.Range(2, 100).ToList(); var j = 0; while (j < pc.Count) { Console.WriteLine(pc[j]); j++; } var pc=Enum
代码:
var pc = Enumerable.Range(2, 100).ToList();
var j = 0;
while (j < pc.Count)
{
Console.WriteLine(pc[j]);
j++;
}
var pc=Enumerable.Range(2100.ToList();
var j=0;
而(j但请注意,由于创建了其他对象,lambda通常速度较慢。不要在性能关键型应用程序中使用它们。您不需要在内存中创建
可枚举范围的列表
var result = string.Join(Environment.NewLine, Enumerable.Range(2, total));
Console.Write(result);
逐步解释
可枚举。范围使一个IEnumerable
从长度为100的2开始。即,项目将为2、3、4…..101
.ToList()
将IEnumerable
转换为List
。为什么要转换?这样我们就可以使用ForEach
方法List
对您最重要的ForEach()
。顾名思义,它对列表中的每个项目执行操作。在这里,列表的每个元素都被提取并放入一个运行时变量p中,该变量“转到”控制台。WriteLine(p)
在控制台上写入
您可以这样做:
Enumerable.Range(2, 100).ToList().ForEach(x => Console.WriteLine(x));
我知道这不是你问题的答案,但这是一个例子,我总是重新考虑LINQ是否真的是这个问题的最佳解决方案。我知道你只需要一个学习的例子,但请记住,对于一个拿着锤子的人来说,一切都像钉子
foreach (var item in Enumerable.Range(2, 100))
{
Console.WriteLine(item);
}
这对我来说更容易理解,并且不会创建不必要的列表
(希望我没有收到太多愤怒的评论…所以它们比我提供的代码显示慢?我刚刚实现了一个筛子,然后在编写之后,在codereview.stackexchange上看到了其他人的筛子,并学习了一些关于lambda表达式的知识,我认为实现它更好,因为代码变得相当简洁。。。所以我的假设是错误的吗?这个例子的优点是,不必创建列表,它直接使用枚举。
Enumerable
没有。ForEach
方法,首先需要使用.ToList()
。@Bali C-Upps你是对的,这里直接使用foreach循环的一个原因是,我不认为它会包含102个元素(2到102个元素就是101个元素)@V4Vendetta:Corrected。谢谢,但是它比我写的用来显示输出的普通循环快吗?在你的例子中,性能并不重要,因为它是一个简单的程序。但是当LINQ或传统循环中有更多的代码行时,传统循环比LINQ快。虽然这是一个很好的解决方案,但提问者希望使用lambda表达式。
pc.ForEach(j => Console.WriteLine(j));
Enumerable.Range(2, 100).ToList().ForEach(p => Console.WriteLine(p));
Enumerable.Range(2, 100).ToList().ForEach(x => Console.WriteLine(x));
Enumerable.Range(2, 100).ToList().ForEach(n => Console.WriteLine(n));
foreach (var item in Enumerable.Range(2, 100))
{
Console.WriteLine(item);
}