Cara menggunakan unjuran dalam C #

Unjuran adalah operasi yang mengubah hasil pertanyaan. Anda boleh menggunakan unjuran untuk mengubah objek menjadi bentuk baru yang hanya mempunyai sifat-sifat yang diperlukan dalam aplikasi anda. Dalam artikel ini, kita akan melihat bagaimana kita dapat bekerja dengan unjuran di C #.

Untuk bekerja dengan contoh kod yang disediakan dalam artikel ini, anda harus memasang Visual Studio 2019 di sistem anda. Sekiranya anda belum mempunyai salinannya, anda boleh memuat turun Visual Studio 2019 di sini. 

Buat projek aplikasi konsol di Visual Studio

Pertama, mari buat projek aplikasi konsol .NET Core di Visual Studio. Dengan mengandaikan Visual Studio 2019 dipasang di sistem anda, ikuti langkah-langkah yang digariskan di bawah untuk membuat projek Aplikasi Konsol Teras NET baru di Visual Studio.

  1. Lancarkan ID Studio Visual.
  2. Klik pada "Buat projek baru."
  3. Di tetingkap "Buat projek baru", pilih "Aplikasi Konsol (.NET Core)" dari senarai templat yang dipaparkan.
  4. Klik Seterusnya.
  5. Di tetingkap "Konfigurasikan projek baru anda" yang ditunjukkan di sebelah, tentukan nama dan lokasi untuk projek baru.
  6. Klik Buat.
  7. Ini akan membuat projek aplikasi konsol .NET Core baru di Visual Studio 2019. Kami akan menggunakan projek ini di bahagian seterusnya artikel ini.

Apakah unjuran dalam C #?

Unjuran merujuk kepada tindakan mengubah objek menjadi bentuk baru sehingga objek yang baru dibuat hanya mengandungi sifat yang akan digunakan. Language Integrated Query (LINQ) menyediakan sokongan untuk dua pengendali unjuran pertanyaan standard, Select and SelectMany.

Anda boleh menggunakan operator Select and SelectMany untuk memproyeksikan satu harta tanah, atau memproyeksikan hasil pertanyaan, atau memproyeksikan banyak sifat dari sumber data menjadi jenis tanpa nama. Anda bahkan boleh melakukan pengiraan, penyaringan, atau operasi lain pada unjuran yang diperlukan.

Pada bahagian yang berikut, kami akan mengkaji bagaimana kami dapat bekerjasama dengan operator ini di C #.

Projek menggunakan operator Select di C #

Tuliskan kod berikut di dalam fail Program.cs.

Pengarang kelas awam

{

    id int awam {dapatkan; menetapkan; }

    rentetan awam FirstName {get; menetapkan; }

    rentetan umum LastName {get; menetapkan; }

    rentetan awam Alamat {get; menetapkan; }

    Pengarang awam (int id, string firstName,

    string lastName, alamat rentetan)

    {

        ini.Id = id;

        ini.FirstName = nama pertama;

        ini.LastName = nama akhir;

        ini.Address = alamat;

    }

}

Coretan kod berikut menggambarkan bagaimana anda dapat memanfaatkan operator Select untuk membuat pertanyaan data.

var penulis = Senarai baru

{

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

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

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

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

};

foreach (nama var dalam pengarang. Pilih (e => e.FirstName))

{

   Console.WriteLine (nama);

}

Apabila anda melaksanakan coretan kod di atas, nama pertama dari semua pengarang akan dipaparkan di tetingkap konsol.

Projek untuk jenis tanpa nama di C #

Anda boleh memproyeksikan lebih dari satu harta dari sumber data, anda juga boleh memproyeksikan ke jenis tanpa nama juga. Coretan kod berikut menggambarkan bagaimana anda dapat memproyeksikan beberapa sifat menjadi jenis tanpa nama.

var data = author.Select (e => {e.FirstName baru, e.LastName} baru);

Projek menggunakan operator SelectMany di C #

Anda boleh memanfaatkan operator SelectMany untuk meminta data dari koleksi yang mengimplementasikan antara muka IEnumerable. Anda boleh menggunakan operator SelectMany ketika anda ingin membuat pertanyaan dari beberapa koleksi dan projek atau meratakannya menjadi satu urutan.

Perhatikan bahawa kedua Select dan SelectMany menghasilkan hasil dari nilai sumber. Walaupun Select menghasilkan satu hasil dari setiap nilai sumber, SelectMany menghasilkan subkumpulan gabungan dari setiap nilai sumber.

Mari sertakan harta tambahan di kelas Pengarang bernama Subjek. Properti ini adalah senarai rentetan yang mengandungi nama subjek yang ditulis oleh penulis.

Pengarang kelas awam

    {

        id int awam {dapatkan; menetapkan; }

        rentetan awam FirstName {get; menetapkan; }

        rentetan umum LastName {get; menetapkan; }

        rentetan awam Alamat {get; menetapkan; }

        mata pelajaran Senarai awam {dapatkan; menetapkan; }

        Pengarang awam (int id, string firstName, string lastName,

        alamat tali, senarai subjek)

        {

            ini.Id = id;

            ini.FirstName = nama pertama;

            ini.LastName = nama akhir;

            ini.Address = alamat;

            ini.Subjek = subjek;

        }

    }

Anda boleh menggunakan coretan kod berikut untuk membuat senarai pengarang.

var penulis = Senarai baru

{

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

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

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

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

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

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

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

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

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

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

 };

Dan anda boleh menggunakan coretan kod di bawah untuk mendapatkan nama bahasa pengaturcaraan yang ditulis oleh penulis.

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

foreach (subjek subjek dalam data)

{

    Console.WriteLine (subjek);

}

Gunakan operator Where untuk menapis data hasil di C #

Anda boleh menggunakan operator Where selepas SelectMany untuk menyaring set hasil. Coretan kod berikut ketika dilaksanakan memaparkan FirstName dan Subjek pengarang yang FirstName dimulakan dengan watak "J" dan tinggal di UK

data var = pengarang

.Di mana (a => a.Address.IndexOf ("UK")> = 0)

.PilihBanyak (a => a.Subjek, (a, Subjek) => baru {a.FirstName, Subject})

.Di mana (n => n.FirstName.StartsWith ("J"));

foreach (pengarang var dalam data)

{

    Console.WriteLine (pengarang);

}

Semasa anda menjalankan coretan kod di atas, anda akan melihat output di tetingkap konsol seperti yang ditunjukkan pada gambar skrin di bawah.

Unjuran dapat digunakan ketika bekerja dengan EF Core, jadi Anda hanya dapat mengambil lajur dari pangkalan data yang anda perlukan untuk aplikasi anda. Dalam artikel yang akan datang di sini, saya akan membincangkan beberapa operasi lanjutan menggunakan unjuran seperti unjuran satu-ke-banyak, penyaringan hasil, dan urutan.