2013-03-11 8 views
4

У меня есть список из списка строк:Перебора списка с, используя ForEach петлю

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

Есть ли способ для перебора списка и отображения элементов в окне консоли без использования цикла Еогеаспа может с помощью лямбда и делегатов.

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

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

+0

Почему вы хотите сделать это без 'foreach'? –

+0

Heres a hint: получить длину и повторить от 0 до длины -1 –

+3

Существует множество способов сделать это. Каковы требования и почему «foreach» не удовлетворяет их? –

ответ

12

Вы можете использовать String.Join для конкатенации всех строк:

string lines = string.Join(Environment.NewLine, list); 
Console.Write(lines); 
+0

Это отлично работает! – user1527762

+0

Вы можете просто сохранить мою жизнь – user3695961

10

К наиболее очевидным является хороший старомодный for петля:

for (var i = 0; i < list.Count; i++) 
{ 
    System.Console.WriteLine("{0}", list[i]); 
} 
+0

Хорошо, для меня это самая ясная версия, и мне она больше всего нравится. Спасибо – Combine

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

Я люблю этот аспект LINQ

list.ForEach(Console.WriteLine); 

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

+1

Обратите внимание, что 'List .ForEach' не является методом LINQ, а просто обычным обычным методом' List '; Методы LINQ никогда не называются чисто побочными эффектами как «Список . FOREach' is. –

+0

Да, технически я согласен, но эти функции обычно сосредоточены вместе с linq :-) –

1

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

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

Ну, вы можете попробовать следующее:

Debug.WriteLine("The folowing fruits are available:"); 
list.ForEach(f => Debug.WriteLine(f)); 

Это очень эквивалент цикла foreach, но не с использованием ключевого слова ,

Это, как говорится, я не знаю, почему вы хотите чтобы избежать цикла foreach при переходе по списку объектов.

+0

@PhilipKendall: спасибо за это исправление опечатки! – joce

0

Есть три способа перебора списка:

//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)); 
Смежные вопросы