Saya memiliki dua contoh IEnumerable<T>
(dengan yang sama T
). Saya ingin contoh baru IEnumerable<T>
yang merupakan gabungan dari keduanya.
Apakah ada metode built-in di. Net untuk melakukan itu atau saya harus menulis sendiri?
c#
.net
ienumerable
concatenation
Samuel Rossille
sumber
sumber
Jawaban:
Ya, LINQ to Objects mendukung ini dengan
Enumerable.Concat
:NB: Jika
first
atausecond
nol Anda akan menerima aArgumentNullException
. Untuk menghindari ini & memperlakukan null seperti yang Anda lakukan pada set kosong, gunakan operator penggabungan nol seperti:sumber
using System.Linq
namespace di bagian atas file kode untuk melihat metode ekstensi yang diinginkan dalam intellisense IDE.The
Concat
Metode akan kembali objek yang mengimplementasikanIEnumerable<T>
dengan mengembalikan sebuah objek (menyebutnya Cat) yang pencacah akan mencoba untuk menggunakan dua melewati-in item enumerable (menyebut mereka A dan B) secara berurutan. Jika enumerables yang lewat mewakili urutan yang tidak akan berubah selama masa hidup Cat, dan yang dapat dibaca dari tanpa efek samping, maka Cat dapat digunakan secara langsung. Jika tidak, mungkin ide yang baik untuk meneleponToList()
padaCat
dan menggunakan dihasilkan tersebutList<T>
(yang akan mewakili snapshot dari isi A dan B).Beberapa enumerables mengambil snapshot ketika enumerasi dimulai, dan akan mengembalikan data dari snapshot itu jika koleksi diubah selama enumerasi. Jika B adalah enumerable, maka perubahan apa pun ke B yang terjadi sebelum Cat mencapai akhir A akan muncul dalam enumerasi Cat, tetapi perubahan yang terjadi setelah itu tidak akan terjadi. Semantik seperti itu mungkin membingungkan; mengambil snapshot Cat dapat menghindari masalah seperti itu.
sumber
Anda dapat menggunakan kode di bawah ini untuk solusi Anda: -
sumber
sumber