Kaedah C# ToDictionary

Kaedah C Todictionary



Fungsi ToDictionary dalam C# ialah fungsi sambungan LINQ yang membolehkan anda mengubah pengumpulan data menjadi kamus yang menawarkan cara yang jelas dan praktikal untuk memetakan entiti kepada kunci yang berbeza dan nilai yang berkaitan. Ia memerlukan dua hujah, dua perwakilan atau ungkapan lambda, satu untuk memilih kunci dan satu tambahan untuk memilih nilai bagi setiap objek dalam koleksi. Dalam artikel ini, kami akan menggunakan beberapa contoh kod C# untuk menunjukkan penggunaan fungsi ToDictionary.

Sintaks:

Mari pecahkan dan fahami setiap komponen yang disediakan dalam sintaks berikut bagi fungsi C# ToDictionary satu demi satu:



adalah dict = koleksi. KepadaKamus ( keySelector , elementSelector ) ;
  • Kata kunci 'var' dibuang di sini untuk mentakrifkan kategori jenis kamus 'dikt' yang terhasil. Dalam kebanyakan kes, ia ialah Kamus dengan K ialah jenis kunci dan V ialah kategori jenis nilai kamus.
  • Elemen 'koleksi' mewakili koleksi sumber yang anda ingin tukar kepada kamus 'dikt'. Ia boleh menjadi mana-mana kelas yang melaksanakan antara muka IEnumerable seperti senarai, tatasusunan atau hasil pertanyaan.
  • Kata kunci “keySelector” ialah ungkapan perwakilan atau lambda yang menentukan cara mengekstrak kunci daripada setiap item dalam koleksi. Ia mendapat elemen daripada koleksi sebagai hujah dan memberikan kembali nilai kunci untuk item tersebut. Kunci harus unik untuk setiap item dalam koleksi, kerana kamus tidak boleh mempunyai kunci pendua.
  • Kata kunci 'elementSelector' merujuk kepada ungkapan perwakilan atau lambda yang menentukan cara mengekstrak nilai daripada setiap item dalam koleksi. Ia juga mendapat elemen koleksi sebagai hujah dan menghasilkan nilai untuk item tersebut.

Selepas melaksanakan fungsi ToDictionary, anda akan mempunyai objek kamus baharu di mana setiap item daripada koleksi diwakili sebagai pasangan nilai kunci.







Contoh 1:

Mari kita mulakan semula panduan ini dengan menunjukkan penggunaan fungsi ToDictionary dalam C# dengan bantuan contoh kod. Mari kita lalui langkah demi langkah.



Kod ini bermula dengan ruang nama yang diperlukan diimport: System, System.Collections.Generic, dan System.Linq. Ruang nama ini menyediakan kelas dan kaedah sambungan yang diperlukan untuk berfungsi dengan koleksi dan LINQ. Kelas 'Dummy' ditakrifkan yang mengandungi kaedah 'Utama' program C# ini.



Di dalam kaedah 'Utama', senarai bernama 'L' dibuat. Senarai ini mengandungi tiga elemen rentetan yang mewakili nama minyak wangi yang berbeza pilihan pengguna. Kaedah ToDictionary dipanggil pada senarai 'L'. Ia menukar senarai ke dalam kamus. Setiap elemen rentetan dalam senarai berfungsi sebagai kedua-dua kunci dan nilai dalam kamus yang dihasilkan.





Kamus dicipta dengan perbandingan kunci tidak sensitif huruf besar-besaran menggunakan parameter StringComparer.OrdinalIgnoreCase yang digunakan terutamanya untuk menentukan perbandingan tidak sensitif huruf besar-kecil apabila menyemak kewujudan kunci. Pernyataan 'jika' menyemak sama ada kamus mengandungi kunci 'bom' sambil mengabaikan kesnya. Jika kunci ditemui, coretan kod dalam bahagian 'jika' akan diproses. Di dalam blok 'jika', pernyataan Console.WriteLine('Bombshell exists') dilaksanakan yang mencetak mesej 'Bombshell exists' ke konsol.

menggunakan Sistem ;

menggunakan Sistem. Koleksi . Generik ;

menggunakan Sistem. Linq ;

Dummy kelas

{

statik batal Utama ( )

{

Senaraikan < tali > L = Senarai baru < tali > ( ) { 'Candu Hitam' , 'Cangkang bom' , 'GucciFlora' } ;

ialah Perfume = L. KepadaKamus ( x => x , x => benar , StringComparer. OrdinalIgnoreCase ) ;

jika ( Minyak wangi. ContainsKey ( 'bom' ) )

{

Konsol. WriteLine ( 'Cangkang bom wujud' ) ;

}

}

}

Memandangkan kamus dicipta dengan perbandingan tidak sensitif huruf besar-besaran, kunci 'bom' sepadan dengan kunci 'Bombshell' sebenar dalam kamus. Akibatnya, mesej 'Bombshell wujud' dicetak pada konsol seperti yang dipaparkan dalam imej output yang dilampirkan berikut:



Contoh 2:

Dalam contoh kod sebelumnya, kami menunjukkan cara koleksi ringkas boleh ditukar kepada kamus melalui fungsi ToDictionary. Sekarang, kita akan bergerak ke arah contoh kod lanjutan kecil C# untuk demonstrasi penggunaan fungsi C# ToDictionary. Mari pecahkan kod baris demi baris.

Coretan kod ilustrasi ini bermula dengan membawa masuk ruang nama wajib yang sama: System, System.Collections.Generic dan System.Linq. Ruang nama ini menyediakan kelas dan kaedah sambungan yang diperlukan untuk berfungsi dengan koleksi dan LINQ untuk contoh kod ini. Kelas 'Dummy' ditakrifkan yang merupakan titik masuk.

Di dalam kaedah 'Utama' bahasa C#, senarai bernama 'L' dibentuk. Senarai ini mengandungi tiga objek kelas 'Data' yang mewakili produk kosmetik yang berbeza dengan harga dan jenamanya. Setiap objek data dimulakan menggunakan sintaks pemula objek. Sifat 'Harga' dan 'Jenama' bagi setiap objek ditetapkan dengan nilai tertentu.

Inilah kaedah ToDictionary. Ia dipanggil di sini pada senarai 'L'. Ia menukar senarai ke dalam kamus di mana sifat 'Harga' digunakan sebagai kunci dan sifat 'Jenama' digunakan sebagai nilai. Kamus yang terhasil diberikan kepada pembolehubah 'Dic' seperti yang dinyatakan dalam coretan kod yang disediakan berikut. Gelung 'foreach' dibuang untuk memanggil pasangan nilai kunci dalam kamus 'Dic'.

Di dalam gelung, kunci dan nilai setiap pasangan diakses menggunakan sifat 'Kunci' dan 'Nilai' struktur KeyValuePair. Pernyataan fungsi Console.WriteLine mencetak setiap pasangan nilai kunci ke konsol. Output diformat menggunakan interpolasi rentetan untuk memaparkan maklumat harga dan jenama secara berasingan.

Di sini, kelas 'Data' ditakrifkan dengan dua sifat: 'Harga' (integer yang mewakili harga produk kosmetik) dan 'Jenama' (rentetan yang mewakili nama jenama produk).

menggunakan Sistem ;

menggunakan Sistem. Koleksi . Generik ;

menggunakan Sistem. Linq ;

Dummy kelas

{

statik batal Utama ( )

{

Senaraikan < Data > L = Senarai baru < Data > ( )

{

Data baharu { harga = 13000 , Jenama = 'Huda Beauty' } ,

Data baharu { harga = 15000 , Jenama = 'Charlotte Telburry' } ,

Data baharu { harga = 11000 , Jenama = 'Nars' }

} ;

Kamus < int , tali > Dis = L. KepadaKamus ( hlm => hlm. harga , hlm => hlm. Jenama ) ;

untuk setiap ( var v dalam Dic )

{

Konsol. WriteLine ( $ 'Harga: {v.Key}, Jenama: {v.Value}' ) ;

}

}

}

Data kelas

{

awam int harga { dapatkan ; ditetapkan ; }

rentetan awam Jenama { dapatkan ; ditetapkan ; }

}

Apabila kod dilaksanakan, ia mencipta senarai objek data, menukar senarai itu kepada kamus menggunakan kaedah ToDictionary, dan kemudian memaparkan pasangan nilai kunci kamus menggunakan gelung 'foreach'.

Output untuk contoh kod ini disediakan dalam yang berikut. Ia menunjukkan harga dan jenama produk kosmetik yang disimpan dalam kamus berdasarkan sifat tertentu, menyediakan cara yang mudah untuk mengatur dan mengakses data dalam pasangan nilai kunci. Output kod sebelumnya menunjukkan tiga rekod untuk kamus:

Kesimpulan

Panduan C# ini menunjukkan penggunaan kaedah C# ToDictionary melalui beberapa ilustrasi kod asas dan tepat. Dengan menawarkan mekanisme yang jelas dan ekspresif untuk menerangkan pasangan nilai kunci, kaedah ToDictionary memudahkan untuk menukar koleksi menjadi kamus. Ia adalah utiliti C# yang kuat untuk memanipulasi dan mengubah data.