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.

Ilustrasi yang menunjukkan tiga operasi pemartisian LINQ.

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