Kekalkan susunan elemen dalam LINQ
Dalam pengaturcaraan, memproses data tersusun adalah senario biasa. Apabila memanipulasi tatasusunan menggunakan LINQ kepada Objek, adalah penting untuk memahami operasi mana yang mengekalkan susunan elemen untuk mengelakkan pengubahsuaian yang tidak disengajakan.
Operasi yang mengekalkan ketenteraman
Operasi LINQ berikut mengekalkan susunan asal elemen tatasusunan:
-
AsEnumerable: Menukar IEnumerable kepada IEnumerable bukan generik.
-
Pelakon: Tukar elemen kepada jenis lain tanpa mengubah suai tertib.
-
Concat: Menggabungkan dua atau lebih jujukan, mengekalkan susunan setiap jujukan.
-
Pilih: Unjurkan setiap elemen kepada nilai baharu tetapi mengekalkan susunannya.
-
ToArray: Mewujudkan IEnumerable ke dalam tatasusunan, mengekalkan susunan.
-
ToList: Mewujudkan IEnumerable ke dalam Senarai, mengekalkan susunan asal.
Beberapa operasi yang mengekalkan ketenteraman
Sesetengah operasi LINQ menapis atau menambah elemen tanpa menyusun semula elemen yang tinggal:
-
Berbeza: Alih keluar unsur pendua (berdasarkan pembanding kesaksamaan). (lihat penerangan di bawah)
-
Kecuali: Mengembalikan elemen yang tidak ditemui dalam urutan yang ditentukan, mengekalkan susunan urutan asal.
-
Bersilang: Mengembalikan elemen yang terdapat dalam kedua-dua jujukan, mengekalkan susunan jujukan pertama.
-
OfType: Tapis elemen jenis tertentu, mengekalkan susunan.
-
Prepend (baharu dalam .NET 4.7.1): Menambah elemen pada permulaan jujukan.
-
Langkau: Melangkau bilangan unsur yang ditentukan pada permulaan jujukan, mengekalkan susunan unsur yang tinggal.
-
SkipWhile: Langkau elemen sehingga predikat menjadi palsu, mengekalkan susunan unsur yang tinggal.
-
Ambil: Mengembalikan bilangan elemen yang ditentukan pada permulaan jujukan, mengekalkan susunan.
-
TakeWhile: Mengembalikan unsur sehingga predikat menjadi palsu, mengekalkan susunan.
-
Di mana: Menapis unsur berdasarkan predikat, mengekalkan susunan unsur padanan.
-
Zip (baharu dalam .NET 4): Gandingkan elemen daripada dua jujukan, mengekalkan susunan setiap jujukan.
Operasi yang memusnahkan pesanan
Operasi LINQ berikut tidak mengekalkan susunan asal unsur:
-
ToDictionary: Menukarkan urutan ke dalam kamus tidak mengekalkan susunan.
-
ToLookup: Sama seperti ToDictionary, pesanan tidak disimpan.
Takrif semula susunan operasi
Operasi LINQ ini secara eksplisit mengubah susunan keputusan:
-
Order By: Isih elemen dalam tertib menaik berdasarkan pemilih kekunci.
-
OrderByDescending: Isih elemen dalam tertib menurun berdasarkan pemilih kekunci.
-
Terbalik: Terbalikkan susunan unsur.
-
ThenBy: Digunakan bersama dengan OrderBy atau OrderByDescending untuk mengisih mengikut kekunci kedua.
-
ThenByDescending: Digunakan bersama OrderBy atau OrderByDescending untuk mengisih mengikut kekunci kedua dalam tertib menurun.
Keadaan istimewa
-
GroupBy: Susunan objek berkumpulan adalah berdasarkan susunan elemen pertama setiap kumpulan. Elemen-elemen dalam kumpulan dikembalikan mengikut susunan ia muncul dalam urutan sumber.
-
GroupJoin: Mengekalkan susunan unsur dalam jujukan luar dan susunan unsur yang sepadan dalam jujukan dalam untuk setiap elemen luar.
-
Sertai: Sama seperti GroupJoin, mengekalkan susunan unsur dalam jujukan luar dan sepadan dengan jujukan dalam.
-
SelectMany: Tertib ditentukan oleh susunan elemen sumber dan urutan yang dikembalikan oleh fungsi pemilih.
-
Kesatuan: Unsur-unsur daripada kedua-dua jujukan dihasilkan dalam susunan asalnya, tanpa pertindihan.
Arahan:
Berdasarkan pelaksanaan dalam .NET, Distinct telah dialihkan ke kategori "pelihara ketertiban", yang mengekalkan susunan elemen selagi tiada pembanding kesaksamaan tersuai disediakan.
Atas ialah kandungan terperinci Operasi LINQ yang manakah Mengekalkan Susunan Elemen dalam Urutan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!