我有一个字符串的列表列表:
var list = new List<string> {"apples","peaches", "mango"};
有没有一种方法可以通过使用lambda和delegate而不是foreach循环来迭代列表并在控制台窗口中显示项目。
我希望输出如下,每个都在新行中: 以下水果可用: 苹果 桃子 芒果
String.Join
来连接所有行:string lines = string.Join(Environment.NewLine, list);
Console.Write(lines);
迄今为止,最明显的方法是老式的for
循环:
for (var i = 0; i < list.Count; i++)
{
System.Console.WriteLine("{0}", list[i]);
}
我非常喜欢linq的这个特定方面
list.ForEach(Console.WriteLine);
这并不是使用 ForEach 循环,而是使用 ForEach actor。但它仍然是一次迭代。
List<T>.ForEach
不是 LINQ 方法,而只是一个普通的老旧的 List<T>
方法;LINQ 方法从来不像 List<T>.ForEach
那样仅仅被调用使用它们的副作用。 - Philip Kendallfor (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i])
}
有三种方法可以迭代一个List:
//1 METHOD
foreach (var item in myList)
{
Console.WriteLine("Id is {0}, and description is {1}", item.id, item.description);
}
//2 METHOD
for (int i = 0; i<myList.Count; i++)
{
Console.WriteLine("Id is {0}, and description is {1}", myList[i].id, myMoney[i].description);
}
//3 METHOD lamda style
myList.ForEach(item => Console.WriteLine("id is {0}, and description is {1}", item.id, item.description));
嗯,你可以尝试以下方法:
Debug.WriteLine("The folowing fruits are available:");
list.ForEach(f => Debug.WriteLine(f));
这是与foreach
循环非常相似的东西,但不使用foreach
关键字。
话虽如此,当迭代对象列表时,我不知道为什么要避免foreach
循环。
foreach
的情况下做这件事? - Philip Kendallforeach
不能满足它们? - Oren Melzer