Ajouter un contenu de listes à une autre liste C #


158

J'ai ce qui suit:

  1. Une liste principale appelée GlobalStrings
  2. Une autre liste appelée localStrings

Dans une boucle par exemple:

List<string> GlobalStrings = new List<string>(); 
List<string> localStrings = new List<string>();
for(x=1;x<10;x++)
{
    localStrings.Add("some value"); 
    localStrings.Add("some value");
}
// Want to append localStrings to GlobalStrings as easily as possible

3
stack over flow always rocks ... nice question ...
— Sangram Nandkhile

2
Vous le faites mal, localStrings = new List<string>;devrait être placé avant la forboucle
— Wassim AZIRAR

1
Wassim, je pense que c'est pourquoi il fait la différence entre local et global; localStrings est local dans la portée de la boucle for, GlobalStrings est dans la portée globale.
— Dagrooms

C'est un mauvais exemple (qui invite à des commentaires totalement faux comme ceux de Wassim), car évidemment vous pouvez simplement le Addfaire GlobalStringsau lieu de le localStrings. Et FWIW que vous bouclez ne fonctionne que 9 fois. Mieux vautfor (int x = 0; x < 10; ++x) {var localStrings = GetAListOfStrings(); /* append those to GlobalStrings */}
— Jim Balter

Réponses:



55
GlobalStrings.AddRange(localStrings);

Ça marche.

Documentation: List<T>.AddRange(IEnumerable<T>).


2
Un personnage vous a perdu un vote positif. Attention, cela vous fait souvent perdre beaucoup plus! (Comme le sommeil ou la raison.)
— deed02392

Bien que correcte, cette réponse est maintenant un double de la réponse de Lee.
— Cœur

22

Essayez la méthode AddRange:

GlobalStrings.AddRange(localStrings);

Bien que correcte, cette réponse est maintenant un double de la réponse de Lee.
— Cœur

9

Avec Linq

var newList = GlobalStrings.Append(localStrings)

3
L'ajout ne semble pas exister? Avez-vous un lien vers MSDN doc pour cela?
— Pod

2
Peut-être que vous vouliez dire Concat ... bien que cela signifierait beaucoup de copie, et est une bonne illustration de la façon de ne pas utiliser LINQ.
— Jim Balter

5

Voici mon exemple:

    private List<int> m_machinePorts = new List<int>();

    public List<int> machinePorts
    {
        get { return m_machinePorts; }
    }

    Init()
    {
        // Custom function to get available ethernet ports
        List<int> localEnetPorts = _Globals.GetAvailableEthernetPorts();

        // Custome function to get available serial ports
        List<int> localPorts = _Globals.GetAvailableSerialPorts();

        // Build Available port list 
        m_machinePorts.AddRange(localEnetPorts);
        m_machinePorts.AddRange(localPorts);
     }

2

si vous voulez être "concis" :)

List<string>GlobalStrings = new List<string>(); 

for(int x=1; x<10; x++) GlobalStrings.AddRange(new List<string> { "some value", "another value"});
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.