Aggiungi un contenuto degli elenchi a un altro elenco C #


158

Ho il seguente:

  1. Un elenco principale chiamato GlobalStrings
  2. Un altro elenco chiamato localStrings

In un ciclo ad esempio:

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
impilare sul flusso oscilla sempre ... bella domanda ...
Sangram Nandkhile,

2
Stai sbagliando, localStrings = new List<string>;dovrebbe essere posizionato prima del forciclo
Wassim AZIRAR

1
Wassim, penso che sia per questo che differenzia tra locale e globale; localStrings è locale nell'ambito for-loop, GlobalStrings è nell'ambito globale.
Dagrooms,

Questo è un esempio povero (che invita commenti come Wassim di totalmente wrongheaded), dal momento che, ovviamente, si può solo Adda GlobalStringsinvece di a localStrings. E FWIW loop funziona solo 9 volte. Meglio sarebbefor (int x = 0; x < 10; ++x) {var localStrings = GetAListOfStrings(); /* append those to GlobalStrings */}
Jim Balter,

Risposte:



55
GlobalStrings.AddRange(localStrings);

Che funzioni.

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


2
Un personaggio ti ha perso un voto. Attenzione, spesso ti perde molto di più! (Come il sonno o la sanità mentale.)
deed02392

Sebbene corretta, questa risposta ora rappresenta un duplicato della risposta di Lee.
Cœur il

22

Prova il metodo AddRange:

GlobalStrings.AddRange(localStrings);

Sebbene corretta, questa risposta ora rappresenta un duplicato della risposta di Lee.
Cœur,

9

Con Linq

var newList = GlobalStrings.Append(localStrings)

3
Append sembra non esistere? Hai un link al documento MSDN per questo?
Pod

2
Forse intendevi Concat ... sebbene ciò significherebbe un sacco di copie, ed è una buona illustrazione di come non usare LINQ.
Jim Balter,

5

Ecco il mio esempio:

    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

se vuoi essere "conciso" :)

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

for(int x=1; x<10; x++) GlobalStrings.AddRange(new List<string> { "some value", "another value"});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.