Итерация по списку без использования цикла ForEach

У меня есть список строк:

var list = new List<string> {"apples","peaches", "mango"};

есть ли способ перебирать список и отображать элементы в окне консоли без использования цикла foreach, используя lambdas и делегаты.

Я хотел бы, чтобы вывод был как ниже каждого в новой строке:

доступны следующие фрукты:
яблоки!--8--> персики!--8--> манго!--2-->

7 ответов


можно использовать 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]);
}

for (int i = 0; i < list.Count; i++)
    {
    Console.WriteLine(list[i])
    }

Мне нравится этот конкретный аспект linq

list.ForEach(Console.WriteLine);

он не использует цикл ForEach как таковой, поскольку он использует актер ForEach. Но, эй, это все-таки перебор.


можно использовать List<T>.ForEach метод, который на самом деле не является частью LINQ, но выглядит так, как будто это было:

list.ForEach(i => Console.WriteLine(i));

существует три способа итерации списка:

//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 цикл при итерации по списку объектов.