Anhängen eines Listeninhalts an eine andere Liste C #


157

Ich habe folgendes:

  1. Eine Hauptliste namens GlobalStrings
  2. Eine andere Liste namens localStrings

In einer Schleife zum Beispiel:

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
Stapel über Fluss rockt immer ... schöne Frage ...
Sangram Nandkhile

2
Sie machen es falsch, localStrings = new List<string>;sollte vor die forSchleife gestellt werden
Wassim AZIRAR

1
Wassim, ich denke, deshalb unterscheidet er zwischen lokal und global. localStrings ist lokal für den for-loop-Bereich, GlobalStrings befindet sich im globalen Bereich.
Dagrooms

Dies ist ein schlechtes Beispiel (das zu völlig falschen Kommentaren wie dem von Wassim einlädt), da man natürlich einfach Addzu GlobalStringsstatt zu könnte localStrings. Und FWIW you loop läuft nur 9 mal. Besser wärefor (int x = 0; x < 10; ++x) {var localStrings = GetAListOfStrings(); /* append those to GlobalStrings */}
Jim Balter

Antworten:




22

Versuchen Sie die AddRange-Methode:

GlobalStrings.AddRange(localStrings);

Diese Antwort ist zwar korrekt, aber jetzt ein Duplikat von Lees Antwort.
Cœur

9

Mit Linq

var newList = GlobalStrings.Append(localStrings)

3
Anhängen scheint nicht zu existieren? Haben Sie einen Link zu MSDN doc dafür?
Pod

2
Vielleicht haben Sie Concat gemeint ... obwohl das viel Kopieren bedeuten würde und ein gutes Beispiel dafür ist, wie man LINQ nicht verwendet.
Jim Balter

5

Hier ist mein Beispiel:

    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

wenn du "knapp" werden willst :)

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

for(int x=1; x<10; x++) GlobalStrings.AddRange(new List<string> { "some value", "another value"});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.