Dołącz zawartość list do innej listy C #


157

Mam:

  1. Główna lista o nazwie GlobalStrings
  2. Kolejna lista o nazwie localStrings

Na przykład w pętli:

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
przepełnienie stosu zawsze kołysze ... miłe pytanie ...
Sangram Nandkhile

2
Robisz to źle, localStrings = new List<string>;powinien być umieszczony przed forpętlą
Wassim AZIRAR

1
Wassim, myślę, że dlatego rozróżnia między lokalnymi i globalnymi; localStrings jest lokalna dla zakresu pętli for, GlobalStrings jest w zasięgu globalnym.
Dagrooms

Jest to biedny przykład (który zachęca całkowicie uparty komentarze typu Wassim'S), ponieważ oczywiście można po prostu Addaby GlobalStringszamiast do localStrings. A pętla FWIW działa tylko 9 razy. Byłoby lepiejfor (int x = 0; x < 10; ++x) {var localStrings = GetAListOfStrings(); /* append those to GlobalStrings */}
Jim Balter

Odpowiedzi:



55
GlobalStrings.AddRange(localStrings);

To działa.

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


2
Jedna postać straciła głos za. Ostrzegam, często powoduje to znacznie większe straty! (Jak sen lub zdrowie psychiczne.)
deed02392

Choć poprawna, ta odpowiedź jest teraz duplikatem odpowiedzi Lee.
Cœur


9

Dzięki Linq

var newList = GlobalStrings.Append(localStrings)

3
Wydaje się, że dołączanie nie istnieje? Czy masz łącze do dokumentu MSDN?
Pod

2
Być może miałeś na myśli Concat ... chociaż oznaczałoby to dużo kopiowania i jest dobrą ilustracją tego, jak nie używać LINQ.
Jim Balter,

5

Oto mój przykład:

    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

jeśli chcesz uzyskać „zwięzły” :)

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

for(int x=1; x<10; x++) GlobalStrings.AddRange(new List<string> { "some value", "another value"});
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.