Jika saya punya:
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?
Saya menjalankan kode yang mirip dengan ini di Visual Studio 2008 dan menetapkan titik istirahat setelah setiap eksekusi. Setelah myList1 = getMeAList();
, myList1
berisi empat string, dan saya menekan tombol plus untuk memastikan semuanya tidak nol.
Setelah myList2 = getMeAnotherList();
, myList2
berisi enam string, dan saya memeriksa untuk memastikan mereka tidak nol ... Setelah myList1.Concat(myList2);
myList1 hanya berisi empat string. Mengapa demikian?
sumber
IEnumerable<T>
Saya pikir itu berfungsi dengan baik. Seperti yang dikatakan sebelumnya, Concat mengembalikan urutan baru dan ketika mengubah hasilnya menjadi Daftar, ia melakukan pekerjaan dengan sempurna.
sumber
Perlu juga dicatat bahwa Concat bekerja dalam waktu dan memori yang konstan. Misalnya, kode berikut
memberikan metrik waktu / memori berikut:
sumber
Saya tahu ini sudah tua tetapi saya menemukan posting ini dengan cepat berpikir Concat akan menjadi jawaban saya. Union bekerja dengan baik untuk saya. Catatan, ini hanya mengembalikan nilai unik tetapi mengetahui bahwa saya mendapatkan nilai unik pula solusi ini berhasil untuk saya.
Outputnya adalah:
sumber
Lihatlah implementasi saya. Aman dari daftar nol.
sumber