Pilih elemen yang Anda lakukan inginkan daripada mencoba untuk menghapus elemen yang Anda tidak inginkan. Ini jauh lebih mudah (dan umumnya juga lebih efisien) daripada menghapus elemen.
var newSequence = (from el in list
where el.Something || el.AnotherThing < 0
select el);
Saya ingin memposting ini sebagai komentar untuk menanggapi komentar yang ditinggalkan oleh Michael Dillon di bawah ini, tetapi terlalu panjang dan mungkin berguna untuk menjawab:
Secara pribadi, saya tidak akan pernah menghapus item satu-per-satu, jika Anda memang perlu dihapus, panggil RemoveAll
yang mengambil predikat dan hanya mengatur ulang array internal satu kali, sedangkan Remove
melakukan Array.Copy
operasi untuk setiap elemen yang Anda hapus. RemoveAll
jauh lebih efisien.
Dan ketika Anda mundur mengulangi daftar, Anda sudah memiliki indeks elemen yang ingin Anda hapus, jadi akan jauh lebih efisien untuk memanggil RemoveAt
, karena Remove
pertama-tama lakukan traversal daftar untuk menemukan indeks elemen yang Anda inginkan. Sedang mencoba untuk menghapus, tetapi Anda sudah tahu indeks itu.
Jadi semuanya, saya tidak melihat alasan untuk memanggil Remove
for-loop. Dan idealnya, jika memungkinkan, gunakan kode di atas untuk mengalirkan elemen dari daftar sesuai kebutuhan sehingga tidak ada struktur data kedua yang harus dibuat sama sekali.