Cara menggunakan proyeksi di C #

Proyeksi adalah operasi yang mengubah hasil kueri. Anda bisa menggunakan proyeksi untuk mengubah objek menjadi bentuk baru yang hanya memiliki properti yang diperlukan dalam aplikasi Anda. Pada artikel ini, kita akan melihat bagaimana kita dapat bekerja dengan proyeksi di C #.

Untuk bekerja dengan contoh kode yang disediakan dalam artikel ini, Anda harus menginstal Visual Studio 2019 di sistem Anda. Jika Anda belum memiliki salinannya, Anda dapat mengunduh Visual Studio 2019 di sini. 

Buat proyek aplikasi konsol di Visual Studio

Pertama, mari buat proyek aplikasi konsol .NET Core di Visual Studio. Dengan asumsi Visual Studio 2019 diinstal di sistem Anda, ikuti langkah-langkah yang diuraikan di bawah ini untuk membuat proyek aplikasi konsol inti .NET baru di Visual Studio.

  1. Luncurkan Visual Studio IDE.
  2. Klik "Buat proyek baru".
  3. Di jendela "Buat proyek baru", pilih "Aplikasi Konsol (.NET Core)" dari daftar template yang ditampilkan.
  4. Klik Next.
  5. Di jendela "Configure your new project" yang ditampilkan berikutnya, tentukan nama dan lokasi untuk proyek baru tersebut.
  6. Klik Buat.
  7. Ini akan membuat proyek aplikasi konsol .NET Core baru di Visual Studio 2019. Kami akan menggunakan proyek ini di bagian selanjutnya dari artikel ini.

Apa proyeksi di C #?

Proyeksi mengacu pada tindakan mengubah suatu objek menjadi bentuk baru sehingga objek yang baru dibuat hanya berisi properti yang akan digunakan. Language Integrated Query (LINQ) memberikan dukungan untuk dua operator proyeksi kueri standar, Select dan SelectMany.

Anda dapat menggunakan operator Select dan SelectMany untuk memproyeksikan satu properti, atau memproyeksikan hasil kueri, atau memproyeksikan beberapa properti dari sumber data menjadi tipe anonim. Anda bahkan dapat melakukan penghitungan, pemfilteran, atau operasi lainnya pada proyeksi sesuai kebutuhan.

Di bagian selanjutnya kita akan memeriksa bagaimana kita dapat bekerja dengan operator ini di C #.

Proyek menggunakan operator Select di C #

Tulis kode berikut di dalam file Program.cs.

kelas publik Penulis

{

    public int Id {get; set; }

    string publik FirstName {get; set; }

    string publik LastName {get; set; }

    public string Address {get; set; }

    Penulis publik (int id, string firstName,

    string lastName, alamat string)

    {

        this.Id = id;

        this.FirstName = firstName;

        this.LastName = lastName;

        this.Address = alamat;

    }

}

Cuplikan kode berikut mengilustrasikan bagaimana Anda dapat memanfaatkan operator Select untuk membuat kueri data.

var writer = Daftar baru

{

   Penulis baru (1, "Joydip", "Kanjilal", "Hyderabad, INDIA"),

   Penulis baru (2, "Anand", "Naraswamy", "Cochin, INDIA"),

   Penulis baru (3, "Steve", "Smith", "Ohio, USA"),

   Penulis baru (4, "Uday", "Denduluri", "London, UK")

};

foreach (nama var di penulis. Pilih (e => e.FirstName))

{

   Console.WriteLine (nama);

}

Saat Anda menjalankan cuplikan kode di atas, nama depan dari semua penulis akan ditampilkan di jendela konsol.

Proyek ke tipe anonim di C #

Anda dapat memproyeksikan lebih dari satu properti dari sumber data, Anda bahkan dapat memproyeksikan ke jenis anonim juga. Cuplikan kode berikut menggambarkan bagaimana Anda dapat memproyeksikan beberapa properti menjadi tipe anonim.

var data = penulis.Pilih (e => baru {e.FirstName, e.LastName});

Proyek menggunakan operator SelectMany di C #

Anda dapat memanfaatkan operator SelectMany untuk membuat kueri data dari koleksi yang menerapkan antarmuka IEnumerable. Anda dapat menggunakan operator SelectMany saat Anda ingin meminta data dari beberapa koleksi dan memproyeksikan atau meratakannya menjadi satu urutan.

Perhatikan bahwa Select dan SelectMany menghasilkan hasil dari nilai sumber. Sementara Select menghasilkan satu hasil dari setiap nilai sumber, SelectMany menghasilkan subkumpulan gabungan dari setiap nilai sumber.

Sekarang mari kita sertakan properti tambahan di kelas Penulis bernama Subjek. Properti ini adalah daftar string yang berisi nama subjek yang penulis tulis di buku.

kelas publik Penulis

    {

        public int Id {get; set; }

        string publik FirstName {get; set; }

        string publik LastName {get; set; }

        public string Address {get; set; }

        Subjek Daftar publik {get; set; }

        Penulis publik (int id, string firstName, string lastName,

        alamat string, daftar subjek)

        {

            this.Id = id;

            this.FirstName = firstName;

            this.LastName = lastName;

            this.Address = alamat;

            this.Subjects = subjek;

        }

    }

Anda dapat menggunakan potongan kode berikut untuk membuat daftar penulis.

var writer = Daftar baru

{

    Penulis baru (1, "Joydip", "Kanjilal", "Hyderabad, INDIA",

    Daftar baru {"C #", "F #"}),

    Penulis baru (2, "Anand", "Naraswamy", "Cochin, INDIA", 

    Daftar baru {"C #", "VB.NET"}),

    Penulis baru (3, "Steve", "Smith", "Ohio, USA", 

    Daftar baru {"C #", "C ++"}),

    Penulis baru (4, "Uday", "Denduluri", "London, UK", 

    Daftar baru {"C #", "VB.NET"}),

    Penulis baru (5, "Jane", "Barlow", "London, UK", 

    Daftar baru {"C #", "C ++"})

 };

Dan Anda dapat menggunakan potongan kode di bawah ini untuk mendapatkan kembali nama-nama bahasa pemrograman yang penulis tulis di buku.

var data = penulis.SelectMany (a => a.Subjects) .Distinct ();

foreach (subjek var dalam data)

{

    Console.WriteLine (subjek);

}

Gunakan operator Where untuk memfilter data hasil di C #

Anda dapat menerapkan operator Di mana setelah SelectMany untuk memfilter kumpulan hasil. Potongan kode berikut saat dijalankan menampilkan Nama Depan dan Subjek penulis yang Nama Depannya dimulai dengan karakter "J" dan tinggal di Inggris Raya

var data = penulis

.Where (a => a.Address.IndexOf ("UK")> = 0)

.SelectMany (a => a.Subjects, (a, Subject) => new {a.FirstName, Subject})

.Where (n => n.FirstName.StartsWith ("J"));

foreach (penulis var dalam data)

{

    Console.WriteLine (penulis);

}

Saat Anda menjalankan cuplikan kode di atas, Anda akan melihat output di jendela konsol seperti yang ditunjukkan pada gambar layar di bawah ini.

Proyeksi dapat digunakan saat bekerja dengan EF Core, sehingga Anda hanya dapat mengambil kolom dari database dasar yang Anda perlukan untuk aplikasi Anda. Dalam artikel mendatang di sini, saya akan membahas beberapa operasi lanjutan menggunakan proyeksi seperti proyeksi satu-ke-banyak, pemfilteran hasil, dan pengurutan.