Wenn ich habe:
List<string> myList1;
List<string> myList2;
myList1 = getMeAList();
// Checked myList1, it contains 4 strings
myList2 = getMeAnotherList();
// Checked myList2, it contains 6 strings
myList1.Concat(myList2);
// Checked mylist1, it contains 4 strings... why?
Ich habe in Visual Studio 2008 ähnlichen Code ausgeführt und nach jeder Ausführung Haltepunkte festgelegt. Nach dem myList1 = getMeAList();
, myList1
enthält vier Saiten, und ich drückte die Plus - Taste , um sicherzustellen , sie waren nicht alle Nullen.
Nach dem myList2 = getMeAnotherList();
, myList2
enthält sechs Saiten, und ich überprüft , um sicherzustellen , sie nicht null waren ... Nach myList1.Concat(myList2);
mylist1 nur vier Saiten enthalten. Warum ist das so?
quelle
IEnumerable<T>
Es funktioniert gut, denke ich. Wie bereits erwähnt, gibt Concat eine neue Sequenz zurück und erledigt das Ergebnis perfekt, während es das Ergebnis in List konvertiert.
quelle
Es ist auch erwähnenswert, dass Concat in konstanter Zeit und in ständigem Gedächtnis arbeitet. Zum Beispiel der folgende Code
gibt die folgenden Timing- / Speichermetriken an:
quelle
Ich weiß, dass dies alt ist, aber ich bin schnell auf diesen Beitrag gestoßen und dachte, Concat wäre meine Antwort. Union hat großartig für mich funktioniert. Beachten Sie, dass nur eindeutige Werte zurückgegeben werden. Da ich jedoch wusste, dass ich ohnehin eindeutige Werte erhalten habe, hat diese Lösung für mich funktioniert.
Die Ausgabe ist:
quelle
Schauen Sie sich meine Implementierung an. Es ist sicher vor Nulllisten.
quelle