Konversikan C# LINQ ke Kamus

Konversikan C Linq Ke Kamus



Di C# LINQ, membuat kamus dari System.Collections.Generic.IEnumerable dimungkinkan menggunakan metode ToDictionary(). Metode ini membuat kamus dengan dari yang diberikan. Itu System.ArgumentNullException dilemparkan jika sumber data, keySelector, atau elementSelector adalah null. Juga, jika keySelector menghasilkan kunci duplikat untuk dua elemen, maka System.ArgumentException dilempar. Dalam panduan ini, kita akan membahas cara membuat kamus dari sumber data daftar dengan membebani dua metode.

Sintaksis:

1. Jika Anda ingin membuat kamus sesuai dengan fungsi pemilih kunci dan pemilih elemen yang ditentukan dari sumber data yang diberikan, bebankan metode berikut:









Parameter:



    1. sumber : Sumber dapat berupa IEnumerable (daftar) di mana kamus dibuat dari sumber ini.
    2. keySelector : Ini adalah fungsi yang digunakan untuk mendapatkan kunci dari setiap elemen.
    3. pemilih elemen: Ini adalah fungsi yang digunakan untuk mendapatkan elemen.
    4. Sumber : Ini adalah parameter tipe yang menentukan tipe sumber data.
    5. TKunci: Ini adalah parameter tipe yang menentukan tipe kunci.
    6. Elemen : Ini adalah parameter tipe yang menentukan tipe elemen.

2. Jika Anda ingin membuat kamus sesuai dengan fungsi pemilih kunci yang ditentukan dari sumber data yang diberikan, bebankan metode berikut:





Parameter:



    1. sumber : Sumber dapat berupa IEnumerable (daftar) di mana kamus dibuat dari sumber ini.
    2. keySelector : Ini adalah fungsi yang digunakan untuk mendapatkan kunci dari setiap elemen.
    3. Sumber: Ini mengacu pada jenis sumber data.
    4. TKey : Ini menentukan jenis kunci.

Contoh 1: Fungsi Pemilih Kunci dan Pemilih Elemen yang Ditentukan

Buat daftar dengan jenis 'Akun' yang menyimpan empat atribut (Acc_ID, Acc_Name, Industri, Pendapatan) dengan lima catatan.

1. Buat kamus dari daftar sebelumnya dengan key sebagai Acc_ID dan Value sebagai Acc_Name.
2. Buat kamus dari daftar sebelumnya dengan key sebagai Acc_Name dan Value sebagai Revenue.

menggunakan Sistem ;
menggunakan System.Linq ;
menggunakan System.Collections.Generic ;

kelas Informasi Akun
{
publik statis ruang kosong Utama ( )
{
// Buat Daftar jenis - Akun.
Detail daftar = baru Daftar ( ) ;
// Tambahkan 5 catatan ke Daftar.
detail . Menambahkan ( baru Akun { Acc_ID = 1 , Nama_Akun = 'Linux' , Industri = 'Pendidikan' ,Pendapatan = 2500 } ) ;
detail . Menambahkan ( baru Akun { Acc_ID = 2 , Nama_Akun = 'Python' , Industri = 'Kamp pelatihan' ,Pendapatan = 10.000 } ) ;
detail . Menambahkan ( baru Akun { Acc_ID = 3 , Nama_Akun = 'Jawa' , Industri = 'Pendidikan' ,Pendapatan = 500 } ) ;
detail . Menambahkan ( baru Akun { Acc_ID = 4 , Nama_Akun = '.BERSIH' , Industri = 'Pelatihan' ,Pendapatan = 2080 } ) ;
detail . Menambahkan ( baru Akun { Acc_ID = 5 , Nama_Akun = 'Peramal' , Industri = 'Pekerjaan' ,Pendapatan = 2090 } ) ;

// Buat Kamus dari Daftar di atas dengan Key sebagai Acc_ID dan Nilai sebagai Acc_Name
Menghibur . WriteLine ( ' ----Kunci sebagai Acc_ID dan Nilai sebagai Acc_Name----' ) ;
Akun kamus_dict1 = detail . KeKamus ( J => J . Acc_ID , J => J . Nama_Akun ) ;

untuk setiap ( KeyValuePair i di dalam akun_dict1 )
{
Menghibur . WriteLine ( 'ID Akun :' + Saya . Kunci + ' Nama akun :' + Saya . Nilai ) ;
}

// Buat Kamus dari Daftar di atas dengan Kunci sebagai Nama_Akun dan Nilai sebagai Pendapatan
Menghibur . WriteLine ( ' ----Kunci sebagai Nama_Akun dan Nilai sebagai Pendapatan----' ) ;
Account kamus_dict2 = detail . KeKamus ( l => l . Nama_Akun , l => l . Pendapatan ) ;

untuk setiap ( KeyValuePair k di dalam akun_dict2 )
{
Menghibur . WriteLine ( 'Nama akun :' + k . Kunci + ' Pendapatan-Akun :' + k . Nilai ) ;
}

}
}

// Buat nama kelas - Akun dengan empat atribut
publik kelas Akun
{
publik int Acc_ID { mendapatkan ; mengatur ; }
publik rangkaian Nama_Akun { mendapatkan ; mengatur ; }
publik rangkaian Industri { mendapatkan ; mengatur ; }
publik int Pendapatan { mendapatkan ; mengatur ; }
}

Keluaran:

Penjelasan:

1. Buat kelas bernama 'Akun' dengan empat atribut.

2. Di kelas utama, buat daftar jenis 'Akun' dan masukkan lima catatan ke dalamnya.

3. Buat kamus dari daftar sebelumnya dengan key sebagai Acc_ID dan Value sebagai Acc_Name. Di sini, kami menetapkan TKey sebagai int dan TElement sebagai string. Di dalam metode ToDictionary() , kami meneruskan Acc_ID di keySelector dan Acc_Name di elementSelector. Akhirnya, kami menggunakan loop 'foreach' untuk mengulangi kamus dan mengembalikan kunci dan nilai menggunakan properti kunci dan nilai.

4. Buat kamus dari daftar sebelumnya dengan kunci sebagai Acc_Name dan nilainya sebagai Pendapatan. Di sini, kami menetapkan TKey sebagai string dan TElement sebagai int. Di dalam metode ToDictionary() , kami meneruskan Acc_Name di keySelector dan Revenue di elementSelector. Akhirnya, kami menggunakan loop 'foreach' untuk mengulangi kamus dan mengembalikan kunci dan nilai menggunakan properti kunci dan nilai.

Contoh 2: Pemilih Kunci yang Ditentukan

Gunakan kode sebelumnya dan buat kamus dari daftar sebelumnya dengan kunci sebagai Acc_ID.

menggunakan Sistem ;
menggunakan System.Linq ;
menggunakan System.Collections.Generic ;

kelas Informasi Akun
{
publik statis ruang kosong Utama ( )
{
// Buat Daftar jenis - Akun.
Detail daftar = baru Daftar ( ) ;
// Tambahkan 5 catatan ke Daftar.
detail . Menambahkan ( baru Akun { Acc_ID = 1 , Nama_Akun = 'Linux' , Industri = 'Pendidikan' ,Pendapatan = 2500 } ) ;
detail . Menambahkan ( baru Akun { Acc_ID = 2 , Nama_Akun = 'Python' , Industri = 'Kamp pelatihan' ,Pendapatan = 10.000 } ) ;
detail . Menambahkan ( baru Akun { Acc_ID = 3 , Nama_Akun = 'Jawa' , Industri = 'Pendidikan' ,Pendapatan = 500 } ) ;
detail . Menambahkan ( baru Akun { Acc_ID = 4 , Nama_Akun = '.BERSIH' , Industri = 'Pelatihan' ,Pendapatan = 2080 } ) ;
detail . Menambahkan ( baru Akun { Acc_ID = 5 , Nama_Akun = 'Peramal' , Industri = 'Pekerjaan' ,Pendapatan = 2090 } ) ;

// Buat Kamus dari Daftar di atas dengan Key sebagai Acc_ID.
kamus accounts_dict = detail . KeKamus ( J => J . Acc_ID ) ;
untuk setiap ( KeyValuePair i di dalam accounts_dict )
{
Menghibur . WriteLine ( 'Kunci:' + Saya . Kunci + '-->  Nama-Akun :' + Saya . Nilai . Nama_Akun
+ ' Akun-Industri :' + Saya . Nilai . Industri
+ ' Pendapatan-Akun :' + Saya . Nilai . Pendapatan ) ;
}

}
}

// Buat nama kelas - Akun dengan empat atribut
publik kelas Akun
{
publik int Acc_ID { mendapatkan ; mengatur ; }
publik rangkaian Nama_Akun { mendapatkan ; mengatur ; }
publik rangkaian Industri { mendapatkan ; mengatur ; }
publik int Pendapatan { mendapatkan ; mengatur ; }
}

Keluaran:

Penjelasan:

Di sini, kami membuat kamus dengan kunci sebagai Acc_ID. Ini bertindak sebagai kunci untuk setiap catatan dalam kamus yang kami buat dari daftar. Setelah itu, kami menggunakan loop 'foreach' untuk mendapatkan kunci dan nilai (dengan atribut) menggunakan properti kunci dan nilai.

Contoh 3: Kunci Duplikat – ArgumentException

Buat daftar dengan dua catatan dan coba ubah menjadi kamus dengan Acc_ID sebagai kuncinya.

menggunakan Sistem ;
menggunakan System.Linq ;
menggunakan System.Collections.Generic ;

kelas Informasi Akun
{
publik statis ruang kosong Utama ( )
{
// Buat Daftar jenis - Akun.
Detail daftar = baru Daftar ( ) ;
// Tambahkan 2 catatan ke Daftar.
detail . Menambahkan ( baru Akun { Acc_ID = 1 , Nama_Akun = 'Linux' , Industri = 'Pendidikan' ,Pendapatan = 2500 } ) ;
detail . Menambahkan ( baru Akun { Acc_ID = 1 , Nama_Akun = 'Python' , Industri = 'Kamp pelatihan' ,Pendapatan = 10.000 } ) ;

// Coba buat Kamus dari Daftar di atas dengan Key sebagai Acc_ID.
kamus accounts_dict = detail . KeKamus ( J => J . Acc_ID ) ;

}
}

// Buat nama kelas - Akun dengan empat atribut
publik kelas Akun
{
publik int Acc_ID { mendapatkan ; mengatur ; }
publik rangkaian Nama_Akun { mendapatkan ; mengatur ; }
publik rangkaian Industri { mendapatkan ; mengatur ; }
publik int Pendapatan { mendapatkan ; mengatur ; }
}

Pengecualian:

Pengecualian yang tidak tertangani yaitu System.ArgumentException dimunculkan karena kuncinya adalah duplikat (1) di kedua Acc_ID.

Contoh 4: Sumber Null – ArgumentNullException

Buat daftar dengan jenis 'Akun' dan tetapkan nol untuk itu. Coba buat kamus dari daftar sebelumnya dengan kunci sebagai Acc_ID.

menggunakan Sistem ;
menggunakan System.Linq ;
menggunakan System.Collections.Generic ;

kelas Informasi Akun
{
publik statis ruang kosong Utama ( )
{
// Buat Daftar tipe - Akun dan tetapkan nol untuk itu.
Detail daftar = batal ;

// Coba buat Kamus dari Daftar di atas dengan Key sebagai Acc_ID.
kamus accounts_dict = detail . KeKamus ( J => J . Acc_ID ) ;

}
}

// Buat nama kelas - Akun dengan empat atribut
publik kelas Akun
{
publik int Acc_ID { mendapatkan ; mengatur ; }
publik rangkaian Nama_Akun { mendapatkan ; mengatur ; }
publik rangkaian Industri { mendapatkan ; mengatur ; }
publik int Pendapatan { mendapatkan ; mengatur ; }
}

Pengecualian:

Pengecualian tidak tertangani yaitu System.ArgumentNullException dimunculkan karena daftarnya nol.

Kesimpulan

Kita belajar cara membuat kamus dari IEnumerable (ini daftarnya) menggunakan metode ToDictionary() di C# LINQ. Metode ini dapat kelebihan beban dalam dua cara. Kami membahas kedua metode dengan contoh. Selain itu, kami mempelajari dua kasus pengecualian yang dimunculkan oleh metode ini saat sumber data/ keySelector/ elementSelector adalah null dan kuncinya duplikat.