Linq İle Bir Liste Nasıl Bir Dictionary’ye Çevrilir?
Merhaba bu yazıda kısa ve öz olarak “.net” ortamında geliştirme yapan programcıların çok işine yarayabilecek bir LINQ fonksiyonundan bahsedeceğim.
Soru: C#’ta bir listeyi nasıl dictionary’ye çevirebiliriz?
Liste içerisinde bir elemandan 1’den fazla olduğunu varsayalım ve bu elemanları Map’lemek istiyoruz. Key eleman , Value ise bu elemanın listedeki sayısı olacak şekilde bir program yazmak istiyoruz. Programımızın akışına göre ihtiyaç duyabileceğimiz bu yöntem farklı şekillerde yapılabilir fakat LINQ bu işi bizim için oldukça kolaylaştırıyor.
Aşağıda örnek bir listemiz mevcut;
Yukarıdaki listeyi çeşitli yöntemlerle bir Dictionary içerisine atmak mümkün. Biz bu işi LINQ ile yapacağız:
- İlk olarak programımıza using System.Linq; ile LINQ’yu programa dahil ediyoruz.
- Daha sonraki aşağıdaki kod parçası ile ilk önce birbiri ile aynı olan sayıları grupluyoruz. ToDictionary( ) fonksiyonu ile de bu gruplanan elemanları key sayının kendisi, value ise bu sayının listedeki sayısı olacak şekilde dictionary’ye çeviriyoruz.
output:
- Bu elemanları da küçükten büyüğe veya büyükten küçüğe sıralamak için ise yine bir LINQ fonksiyonu olan OrderBy( ) ve OrderByDescending ( ) fonksiyonunu kullanabiliriz:
output:
Yukarıdaki kod OrderBy( ) ile küçükten büyüğe sıralamıştır. OrderByDescending( ) ile büyükten küçüğe sıralamak mümkündür.
- Bir diğer şekilde elemanların sayılarına göre sıralamaya sokmak istersen de şu kod parçası ile bunu sağlayabiliriz:
output: