.net
linq
list
extension-methods
johnc
sumber
sumber
Perbedaan besar adalah bahwa AddRange mengubah daftar yang disebutnya sedangkan Concat membuat Daftar baru. Karenanya mereka memiliki kegunaan yang berbeda.
Juga Concat adalah metode ekstensi yang berlaku untuk IEnumerable dan mengembalikan IEnumerable, Anda memerlukan .ToList () untuk menghasilkan List baru.
Jika Anda ingin memperluas konten dari daftar yang sudah ada, gunakan AddRange.
Jika Anda membuat daftar baru dari dua sumber IEnumerable, gunakan Concat dengan .ToList. Ini memiliki kualitas yang tidak bermutasi pada salah satu sumber.
Jika Anda hanya perlu menghitung isi dari dua Daftar (atau IEnumerable lainnya) maka cukup gunakan Concat setiap kali, ini memiliki keuntungan karena tidak benar-benar mengalokasikan memori baru untuk menyimpan daftar terpadu.
sumber
Saya menemukan artikel menarik ini berbicara tentang perbedaan antara 2 struktur ini dan membandingkan kinerjanya ...
Ide utamanya adalah bahwa AddRange jauh lebih cepat jika tentang koleksi ukuran besar.
Ini Tautannya
Semoga ini membantu,
sumber
Concat
danAddRange
denganList<KeyValuePair<string, string>>
1000 elemen, digabungkan / ditambahkan 100 kali, danAddRange
sangat cepat. Hasilnya adalah ini:AddRange
13 ms,Concat().ToList()
16.000 ms, danConcat
pada saatIEnumerable
melakukan hanyaToList
pada akhirnya: 2.700 ms.