C# LINQ'u Sözlüğe Dönüştür

C Linq U Sozluge Donustur



C# LINQ'da sözlükten bir sözlük oluşturma System.Collections.Generic.IEnumerable ToDictionary() yöntemi kullanılarak mümkündür. Bu yöntem, verilen öğesinden ile bir sözlük oluşturur. bu System.ArgumentNullException veri kaynağı, keySelector veya elementSelector boşsa atılır. Ayrıca, keySelector iki öğe için yinelenen anahtarlar üretirse, System.ArgumentException Atıldı. Bu kılavuzda, iki yöntemi aşırı yükleyerek liste veri kaynağından nasıl sözlük oluşturulacağını tartışacağız.

Sözdizimi:

1. Verilen veri kaynağından belirtilen anahtar seçici ve öğe seçici işlevlerine göre bir sözlük oluşturmak istiyorsanız, aşağıdaki yöntemi aşırı yükleyin:









parametreler:



    1. kaynak : Kaynak, sözlüğün bu kaynaktan oluşturulduğu bir IEnumerable (liste) olabilir.
    2. anahtar seçici : Bu, her öğeden anahtarı almak için kullanılan bir işlevdir.
    3. eleman Seçici: Bu, elemanı almak için kullanılan bir fonksiyondur.
    4. Kaynak : Bu, veri kaynağının türünü belirten tür parametresidir.
    5. Anahtar: Bu, anahtarın türünü belirten tür parametresidir.
    6. TE öğesi : Bu, elemanın tipini belirten type parametresidir.

2. Verilen veri kaynağından belirtilen tuş seçici işlevine göre bir sözlük oluşturmak istiyorsanız, aşağıdaki yöntemi aşırı yükleyin:





parametreler:



    1. kaynak : Kaynak, sözlüğün bu kaynaktan oluşturulduğu bir IEnumerable (liste) olabilir.
    2. anahtar seçici : Bu, her öğeden anahtarı almak için kullanılan bir işlevdir.
    3. Kaynak: Bu, veri kaynağının türünü ifade eder.
    4. TKey : Anahtarın türünü belirtir.

Örnek 1: Belirtilen Tuş Seçici ve Eleman Seçici İşlevi

Beş kayıt ile dört öznitelik (Acc_ID, Acc_Name, Industry, Revenue) içeren “Hesap” tipi ile bir liste oluşturun.

1. Anahtarı Acc_ID ve Değeri Acc_Name olarak kullanarak önceki listeden bir sözlük oluşturun.
2. Anahtarı Acc_Name ve Value olarak Revenue olarak önceki listeden bir sözlük oluşturun.

kullanarak Sistem ;
kullanarak System.Linq ;
kullanarak System.Collections.Generic ;

sınıf Hesap Bilgileri
{
halk statik geçersiz Ana ( )
{
// Tür Listesi Oluştur - Hesap.
Liste ayrıntıları = yeni Liste ( ) ;
// Listeye 5 kayıt ekleyin.
detaylar . Eklemek ( yeni Hesap { Acc_ID = 1 , Acc_Name = 'Linux' , Sanayi = 'Eğitim' ,Hasılat = 2500 } ) ;
detaylar . Eklemek ( yeni Hesap { Acc_ID = 2 , Acc_Name = 'Piton' , Sanayi = 'Eğitim kampı' ,Hasılat = 10000 } ) ;
detaylar . Eklemek ( yeni Hesap { Acc_ID = 3 , Acc_Name = 'Java' , Sanayi = 'Eğitim' ,Hasılat = 500 } ) ;
detaylar . Eklemek ( yeni Hesap { Acc_ID = 4 , Acc_Name = '.AÇIK' , Sanayi = 'Eğitim' ,Hasılat = 2080 } ) ;
detaylar . Eklemek ( yeni Hesap { Acc_ID = 5 , Acc_Name = 'Kâhin' , Sanayi = 'İş' ,Hasılat = 2090 } ) ;

// Yukarıdaki Listeden Anahtarı Acc_ID ve Değeri Acc_Name olarak kullanarak bir Sözlük oluşturun
Konsol . Yazı çizgisi ( ' ----Anahtarı Acc_ID olarak ve Değeri Acc_Name olarak girin----' ) ;
Sözlük hesapları_dict1 = detaylar . Sözlüğe ( J => J . Acc_ID , J => J . Acc_Name ) ;

her biri için ( KeyValuePair i içinde Accounts_dict1 )
{
Konsol . Yazı çizgisi ( 'Hesap Kimliği :' + Ben . Anahtar + ' Hesap adı :' + Ben . Değer ) ;
}

// Anahtarı Acc_Name ve Değeri Gelir olarak kullanarak yukarıdaki Listeden bir Sözlük oluşturun
Konsol . Yazı çizgisi ( ' ----Anahtar_Adı olarak Anahtar ve Gelir olarak Değer----' ) ;
Sözlük hesapları_dict2 = detaylar . Sözlüğe ( ben => ben . Acc_Name , ben => ben . Hasılat ) ;

her biri için ( AnahtarDeğerÇifti k içinde Accounts_dict2 )
{
Konsol . Yazı çizgisi ( 'Hesap adı :' + k . Anahtar + ' Hesap-Gelir :' + k . Değer ) ;
}

}
}

// adlı sınıf oluştur - Dört öznitelikli hesap
halk sınıf Hesap
{
halk int Acc_ID { elde etmek ; ayarlamak ; }
halk sicim Acc_Name { elde etmek ; ayarlamak ; }
halk sicim Sanayi { elde etmek ; ayarlamak ; }
halk int Hasılat { elde etmek ; ayarlamak ; }
}

Çıktı:

Açıklama:

1. Dört özelliğe sahip 'Hesap' adlı bir sınıf oluşturun.

2. Ana sınıfta “Hesap” türünde bir liste oluşturun ve içine beş kayıt ekleyin.

3. Acc_ID olarak anahtar ve Acc_Name olarak Value ile önceki listeden bir sözlük oluşturun. Burada TKey'i int ve TElement'i string olarak belirtiyoruz. ToDictionary() yönteminin içinde, keySelector'da Acc_ID'yi ve elementSelector'da Acc_Name'i iletiyoruz. Son olarak, sözlüğü yinelemek ve key ve value özelliklerini kullanarak anahtarları ve değerleri döndürmek için 'foreach' döngüsünü kullanıyoruz.

4. Anahtarı Acc_Name ve değeri Revenue olarak kullanarak önceki listeden bir sözlük oluşturun. Burada TKey'i string olarak ve TElement'i int olarak belirtiyoruz. ToDictionary() yönteminin içinde, keySelector'da Acc_Name'i ve elementSelector'da Gelir'i iletiyoruz. Son olarak, sözlüğü yinelemek ve key ve value özelliklerini kullanarak anahtarları ve değerleri döndürmek için 'foreach' döngüsünü kullanıyoruz.

Örnek 2: Belirtilen Tuş Seçici

Önceki kodu kullanın ve Acc_ID anahtarıyla önceki listeden bir sözlük oluşturun.

kullanarak sistem ;
kullanarak System.Linq ;
kullanarak System.Collections.Generic ;

sınıf Hesap Bilgileri
{
halk statik geçersiz Ana ( )
{
// Tür Listesi Oluştur - Hesap.
Liste ayrıntıları = yeni Liste ( ) ;
// Listeye 5 kayıt ekleyin.
detaylar . Eklemek ( yeni Hesap { Acc_ID = 1 , Acc_Name = 'Linux' , Sanayi = 'Eğitim' ,Hasılat = 2500 } ) ;
detaylar . Eklemek ( yeni Hesap { Acc_ID = 2 , Acc_Name = 'Piton' , Sanayi = 'Eğitim kampı' ,Hasılat = 10000 } ) ;
detaylar . Eklemek ( yeni Hesap { Acc_ID = 3 , Acc_Name = 'Java' , Sanayi = 'Eğitim' ,Hasılat = 500 } ) ;
detaylar . Eklemek ( yeni Hesap { Acc_ID = 4 , Acc_Name = '.AÇIK' , Sanayi = 'Eğitim' ,Hasılat = 2080 } ) ;
detaylar . Eklemek ( yeni Hesap { Acc_ID = 5 , Acc_Name = 'Kâhin' , Sanayi = 'İş' ,Hasılat = 2090 } ) ;

// Anahtarı Acc_ID olarak kullanarak yukarıdaki Listeden bir Sözlük oluşturun.
sözlük hesapları_dict = detaylar . Sözlüğe ( J => J . Acc_ID ) ;
her biri için ( KeyValuePair i içinde Accounts_dict )
{
Konsol . Yazı çizgisi ( 'Anahtar:' + Ben . Anahtar + '-->  Hesap-Adı :' + Ben . Değer . Acc_Name
+ ' Hesap-Endüstri :' + Ben . Değer . Sanayi
+ ' Hesap-Gelir :' + Ben . Değer . Hasılat ) ;
}

}
}

// adlı sınıf oluştur - Dört öznitelikli hesap
halk sınıf Hesap
{
halk int Acc_ID { elde etmek ; ayarlamak ; }
halk sicim Acc_Name { elde etmek ; ayarlamak ; }
halk sicim Sanayi { elde etmek ; ayarlamak ; }
halk int Hasılat { elde etmek ; ayarlamak ; }
}

Çıktı:

Açıklama:

Burada Acc_ID anahtarı ile bir sözlük oluşturuyoruz. Bu, listeden oluşturduğumuz sözlükteki her kayıt için anahtar görevi görür. Bundan sonra, key ve value özelliklerini kullanarak anahtarları ve değerleri (niteliklerle birlikte) almak için “foreach” döngüsünü kullanırız.

Örnek 3: Yinelenen Anahtarlar – ArgumentException

İki kayıt içeren bir liste oluşturun ve bunu Acc_ID as anahtarıyla bir sözlüğe dönüştürmeyi deneyin.

kullanarak sistem ;
kullanarak System.Linq ;
kullanarak System.Collections.Generic ;

sınıf Hesap Bilgileri
{
halk statik geçersiz Ana ( )
{
// Tür Listesi Oluştur - Hesap.
Liste ayrıntıları = yeni Liste ( ) ;
// Listeye 2 kayıt ekleyin.
detaylar . Eklemek ( yeni Hesap { Acc_ID = 1 , Acc_Name = 'Linux' , Sanayi = 'Eğitim' ,Hasılat = 2500 } ) ;
detaylar . Eklemek ( yeni Hesap { Acc_ID = 1 , Acc_Name = 'Piton' , Sanayi = 'Eğitim kampı' ,Hasılat = 10000 } ) ;

// Anahtarı Acc_ID olarak kullanarak yukarıdaki Listeden bir Sözlük oluşturmaya çalışın.
sözlük hesapları_dict = detaylar . Sözlüğe ( J => J . Acc_ID ) ;

}
}

// adlı sınıf oluştur - Dört öznitelikli hesap
halk sınıf Hesap
{
halk int Acc_ID { elde etmek ; ayarlamak ; }
halk sicim Acc_Name { elde etmek ; ayarlamak ; }
halk sicim Sanayi { elde etmek ; ayarlamak ; }
halk int Hasılat { elde etmek ; ayarlamak ; }
}

İstisna:

Anahtar, her iki Acc_ID'de yinelenen (1) olduğundan, System.ArgumentException olan işlenmeyen bir istisna ortaya çıkar.

Örnek 4: Boş Kaynak – ArgumentNullException

'Hesap' türüyle bir liste oluşturun ve buna null atayın. Acc_ID anahtarıyla önceki listeden bir sözlük oluşturmaya çalışın.

kullanarak sistem ;
kullanarak System.Linq ;
kullanarak System.Collections.Generic ;

sınıf Hesap Bilgileri
{
halk statik geçersiz Ana ( )
{
// - Hesap türünde bir Liste oluşturun ve ona boş değer atayın.
Liste ayrıntıları = hükümsüz ;

// Anahtarı Acc_ID olarak kullanarak yukarıdaki Listeden bir Sözlük oluşturmaya çalışın.
sözlük hesapları_dict = detaylar . Sözlüğe ( J => J . Acc_ID ) ;

}
}

// adlı sınıf oluştur - Dört öznitelikli hesap
halk sınıf Hesap
{
halk int Acc_ID { elde etmek ; ayarlamak ; }
halk sicim Acc_Name { elde etmek ; ayarlamak ; }
halk sicim Sanayi { elde etmek ; ayarlamak ; }
halk int Hasılat { elde etmek ; ayarlamak ; }
}

İstisna:

Liste boş olduğundan, System.ArgumentNullException olan işlenmeyen bir özel durum ortaya çıktı.

Çözüm

C# LINQ'da ToDictionary() yöntemini kullanarak IEnumerable'dan (burada listedir) bir sözlük oluşturmayı öğrendik. Bu yöntem iki şekilde aşırı yüklenebilir. Her iki yöntemi de örneklerle tartıştık. Ayrıca, veri kaynağı/keySelector/elementSelector boş olduğunda ve anahtarlar yinelendiğinde bu yöntemle ortaya çıkan iki istisna durumunu da öğrendik.