Pemartisian Data (C#)
Pemartisian di LINQ mengacu pada operasi pembagian urutan input menjadi dua bagian, tanpa mengatur ulang elemen, dan kemudian mengembalikan salah satu bagiannya.
Ilustrasi berikut menunjukkan hasil dari tiga operasi pemartisian yang berbeda pada urutan karakter. Operasi pertama mengembalikan tiga elemen pertama dalam urutan. Operasi kedua melompati tiga elemen pertama dan mengembalikan elemen yang tersisa. Operasi ketiga melompati dua elemen pertama dalam urutan dan mengembalikan tiga elemen berikutnya.
Metode operator kueri standar yang urutan partisinya terdaftar pada bagian berikut.
Operator
Nama metode | Deskripsi | Sintaks ekspresi kueri C# | Informasi selengkapnya |
---|---|---|---|
Lewati | Melompati elemen ke posisi tertentu secara berurutan. | Tidak berlaku. | Enumerable.Skip Queryable.Skip |
SkipWhile | Melompati elemen berdasarkan fungsi predikat hingga elemen tidak memenuhi kondisi. | Tidak berlaku. | Enumerable.SkipWhile Queryable.SkipWhile |
Take | Ambil elemen ke posisi tertentu secara berurutan. | Tidak berlaku. | Enumerable.Take Queryable.Take |
TakeWhile | Mengambil elemen berdasarkan fungsi predikat hingga elemen tidak memenuhi kondisi. | Tidak berlaku. | Enumerable.TakeWhile Queryable.TakeWhile |
Gugus | Memisahkan elemen urutan menjadi beberapa potongan ukuran maksimum yang ditentukan. | Tidak berlaku. | Enumerable.Chunk Queryable.Chunk |
Semua contoh berikut menggunakan Enumerable.Range(Int32, Int32) untuk menghasilkan urutan angka dari 0 hingga 7.
Anda menggunakan Take
metode untuk hanya mengambil elemen pertama secara berurutan:
foreach (int number in Enumerable.Range(0, 8).Take(3))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 0
// 1
// 2
Anda menggunakan Skip
metode untuk melewati elemen pertama secara berurutan, dan menggunakan elemen yang tersisa:
foreach (int number in Enumerable.Range(0, 8).Skip(3))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 3
// 4
// 5
// 6
// 7
Metode TakeWhile
dan SkipWhile
juga mengambil dan melewati elemen secara berurutan. Namun, alih-alih sejumlah elemen yang ditetapkan, metode ini melompat atau mengambil elemen berdasarkan kondisi. TakeWhile
mengambil elemen urutan hingga elemen tidak cocok dengan kondisi.
foreach (int number in Enumerable.Range(0, 8).TakeWhile(n => n < 5))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 0
// 1
// 2
// 3
// 4
SkipWhile
melompati elemen pertama, selama kondisinya benar. Elemen pertama yang tidak cocok dengan kondisi, dan semua elemen berikutnya, dikembalikan.
foreach (int number in Enumerable.Range(0, 8).SkipWhile(n => n < 5))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 5
// 6
// 7
Operator Chunk
digunakan untuk membagi elemen urutan berdasarkan size
.
int chunkNumber = 1;
foreach (int[] chunk in Enumerable.Range(0, 8).Chunk(3))
{
Console.WriteLine($"Chunk {chunkNumber++}:");
foreach (int item in chunk)
{
Console.WriteLine($" {item}");
}
Console.WriteLine();
}
// This code produces the following output:
// Chunk 1:
// 0
// 1
// 2
//
//Chunk 2:
// 3
// 4
// 5
//
//Chunk 3:
// 6
// 7
Kode C# sebelumnya:
- Mengandalkan Enumerable.Range(Int32, Int32) untuk menghasilkan urutan angka.
- Menerapkan operator
Chunk
, membagi urutan menjadi potongan dengan ukuran maksimum tiga.
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk