238 votes

Comment puis-je parcourir en boucle une List<T> et saisir chaque élément ?

Comment puis-je faire une boucle dans une liste et saisir chaque élément ?

Je veux que la sortie ressemble à ceci :

Console.WriteLine("amount is {0}, and type is {1}", myMoney.amount, myMoney.type);

Voici mon 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; }
}

356voto

Simon Whitehead Points 27669

foreach :

foreach (var money in myMoney) {
    Console.WriteLine("Amount is {0} and type is {1}", money.amount, money.type);
}

Lien MSDN

Alternativement, parce qu'il s'agit d'un List<T> .. qui implémente une méthode d'indexation [] vous pouvez utiliser un for boucle également bien qu'elle soit moins lisible (IMO) :

for (var i = 0; i < myMoney.Count; i++) {
    Console.WriteLine("Amount is {0} and type is {1}", myMoney[i].amount, myMoney[i].type);
}

43voto

acarlon Points 4636

Pour être complet, il existe également la méthode LINQ/Lambda :

myMoney.ForEach((theMoney) => Console.WriteLine("amount is {0}, and type is {1}", theMoney.amount, theMoney.type));

25voto

Khan Points 8610

Comme toute autre collection. Avec l'ajout de la List<T>.ForEach méthode.

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));

16voto

Coder Absolute Points 959

Voici comment j'écrirais en utilisant plus functional way . Voici le 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}");
});

3voto

yu yang Jian Points 2161

Le faible niveau iterator manipuler le 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);
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X