How can I loop through a List and grab each item?
I want the output to look like this:
Console.WriteLine("amount is {0}, and type is {1}", myMoney.amount, myMoney.type); Here is my code:
static void Main(string[] args) { List<Money> myMoney = new List<Money> { new Money{amount = 10, type = "US"}, new Money{amount = 20, type = "US"} }; } class Money { public int amount { get; set; } public string type { get; set; } } 5 Answers
foreach:
foreach (var money in myMoney) { Console.WriteLine("Amount is {0} and type is {1}", money.amount, money.type); } Alternatively, because it is a List<T>.. which implements an indexer method [], you can use a normal for loop as well.. although its less readble (IMO):
for (var i = 0; i < myMoney.Count; i++) { Console.WriteLine("Amount is {0} and type is {1}", myMoney[i].amount, myMoney[i].type); } 3Just for completeness, there is also the LINQ/Lambda way:
myMoney.ForEach((theMoney) => Console.WriteLine("amount is {0}, and type is {1}", theMoney.amount, theMoney.type)); 2Just like any other collection. With the addition of the List<T>.ForEach method.
foreach (var item in myMoney) Console.WriteLine("amount is {0}, and type is {1}", item.amount, item.type); for (int i = 0; i < myMoney.Count; i++) Console.WriteLine("amount is {0}, and type is {1}", myMoney[i].amount, myMoney[i].type); myMoney.ForEach(item => Console.WriteLine("amount is {0}, and type is {1}", item.amount, item.type)); 2This is how I would write using more functional way. Here is the code:
new List<Money>() { new Money() { Amount = 10, Type = "US"}, new Money() { Amount = 20, Type = "US"} } .ForEach(money => { Console.WriteLine($"amount is {money.Amount}, and type is {money.Type}"); }); 1The low level iterator manipulate code:
List<Money> myMoney = new List<Money> { new Money{amount = 10, type = "US"}, new Money{amount = 20, type = "US"} }; using (var enumerator = myMoney.GetEnumerator()) { while (enumerator.MoveNext()) { var element = enumerator.Current; Console.WriteLine(element.amount); } } 2