Saya sudah berkomentar tapi saya masih berpikir itu pilihan yang valid, hanya menguji apakah di lingkungan Anda lebih baik satu solusi atau yang lain. Dalam kasus khusus saya, menggunakan source.ForEach(p => dest.Add(p))
berkinerja lebih baik daripada yang klasik AddRange
tapi saya belum menyelidiki mengapa di level rendah.
Anda dapat melihat contoh kode di sini: https://gist.github.com/mcliment/4690433
Jadi opsinya adalah:
var allProducts = new List<Product>(productCollection1.Count +
productCollection2.Count +
productCollection3.Count);
productCollection1.ForEach(p => allProducts.Add(p));
productCollection2.ForEach(p => allProducts.Add(p));
productCollection3.ForEach(p => allProducts.Add(p));
Uji untuk mengetahui apakah itu cocok untuk Anda.
Penafian : Saya tidak menganjurkan solusi ini, saya menemukan Concat
yang paling jelas. Saya baru saja menyatakan - dalam diskusi saya dengan Jon - bahwa di mesin saya kasus ini berkinerja lebih baik daripada AddRange
, tetapi dia mengatakan, dengan pengetahuan yang jauh lebih banyak daripada saya, bahwa ini tidak masuk akal. Ada intinya jika Anda ingin membandingkan.