346 votes

Comment copier des éléments d'une liste à une autre sans foreach ?

Comment transférer les éléments contenus dans un List à un autre en C# sans utiliser foreach ?

3 votes

Si vous avez besoin d'un clone profond de la liste originale, vous trouverez la réponse dans cette question connexe : stackoverflow.com/questions/222598/

2voto

Rajeev Points 213

Il est facile de faire correspondre différents ensembles de listes par linq sans boucle for.

var List1= new List<Entities1>();

var List2= new List<Entities2>();

var List2 = List1.Select(p => new Entities2
        {
            EntityCode = p.EntityCode,
            EntityId = p.EntityId,
            EntityName = p.EntityName
        }).ToList();

0voto

Jim Stevens Points 1

OK, cela fonctionne bien D'après les suggestions ci-dessus, GetRange( ) ne fonctionne pas pour moi avec une liste comme argument... donc j'améliore un peu les choses d'après les messages ci-dessus : ( merci à tous :)

/*  Where __strBuf is a string list used as a dumping ground for data  */
public List < string > pullStrLst( )
{
    List < string > lst;

    lst = __strBuf.GetRange( 0, __strBuf.Count );     

    __strBuf.Clear( );

    return( lst );
}

-1voto

Black Dream Points 1
public static List<string> GetClone(this List<string> source)
{
    return source.Select(item => (string)item.Clone()).ToList();
}

-10voto

ratty Points 3926

Voici une autre méthode mais elle est un peu moins bonne que les autres.

List<int> i=original.Take(original.count).ToList();

25 votes

Pourquoi feriez-vous cela ? Pourquoi pas ToList() directement ?

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