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 AddRangetapi 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 Concatyang 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.