Cevap Geçmişi
«« Soruya geri dön
13.04.16 14:08
C#  Dictionary  sınıfının bir sıralama özelliği veya yöntemi yok. Ancak  Dictionary 'nin yeni bir şekli olan  SortedDictionary  ile değerlerin otomatik olarak anahtara göre sıralı halini elde edebilirsin. Ancak  SortedDictionary   Dictionary   sınıfından çok daha yavaş çalışıyor. Çok yoğun verilerle çalışıyorsanız tavsiye etmem. Bana göre  Dictionary  kullanıp sonradan sıralı halini almak daha iyi bir seçim. Yine de seçim sizin tabiki. Ben altta her ikisi için de örnekler vereceğim. Bir Dictionary nesnesinin elemanlarına  anahtara  göre sıralı halde ulaşmak static void Main(string[] args)
{
    // Bir sözlük oluştur.
    Dictionary dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("masa", 30);
    dictionary.Add("sandalye", 5);
    dictionary.Add("fare", 13);
    // Anahtarları List sınıfından bir örneğe çevir
    // (List<String> döndürür ama tiplerle uğraşmak istemezseniz değişkeni var ile tanımlayın)
    var list = dictionary.Keys.ToList();
    // List nesnesini sırala
    list.Sort();
    
     // Eğer anahtar adlarında Türkçe karakterler (çşğı vs.) listenin sıralamasını
    // aşağıdaki gibi yapmalısınız.
    // list.Sort(StringComparer.Create(new System.Globalization.CultureInfo("tr-TR"), true));
 
    // Liste elemanlarını sıradan gezerek listedeki anahtara
    // sahip olan değerleri yaz.
    foreach (var key in list)
    {
        Console.WriteLine("{0}: {1}", key, dictionary[key]);
    }
    Console.ReadLine();
} İkinci ve daha kısa bir yol. static void Main(string[] args)
{
    // Bir sözlük oluştur.
    var dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("çasa", 30);
    dictionary.Add("ıandalye", 5);
    dictionary.Add("fare", 13);
    // LINQ sorgusuyla anahtara göre sıralı bir liste (IEnumerable) oluştur.
    var items = dictionary.OrderBy(i =>  i.Key );
    foreach (var item in items)
    {
        Console.WriteLine("{0}: {1}", item.Key, item.Value);
    }
    Console.ReadLine();
} Bir Dictionary nesnesinin elemanlarına  değere  göre sıralı halde ulaşmak ( LINQ  ve  Lambda İfadeleri  kullanarak) static void Main(string[] args)
{
    // Bir sözlük oluştur.
    var dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("çasa", 30);
    dictionary.Add("ıandalye", 5);
    dictionary.Add("fare", 13);
    // LINQ sorgusuyla sıralı bir liste (IEnumerable) oluştur.
    var items = from pair in dictionary
                orderby pair.Value ascending
                select pair;
    // Sonuçları göster
    foreach (KeyValuePair<string, int> pair in items)
    {
        Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
    }
    Console.ReadLine();
}
 using kısmına System.Linq isim alanını dahil etmeyi unutmayın.
 Veya daha kısa olarak şöyle yapılabilir. static void Main(string[] args)
{
    // Bir sözlük oluştur.
    var dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("çasa", 30);
    dictionary.Add("ıandalye", 5);
    dictionary.Add("fare", 13);
    // LINQ sorgusuyla anahtara göre sıralı bir liste (IEnumerable) oluştur.
    var items = dictionary.OrderBy(i =>  i.Value );
    foreach (var item in items)
    {
        Console.WriteLine("{0}: {1}", item.Key, item.Value);
    }
    Console.ReadLine();
}
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
Cevap olarak seçen: canora
13.04.16 14:06
C#  Dictionary  sınıfının bir sıralama özelliği veya yöntemi yok. Ancak  Dictionary 'nin yeni bir şekli olan  SortedDictionary  ile değerlerin otomatik olarak anahtara göre sıralı halini elde edebilirsin. Ancak  SortedDictionary   Dictionary   sınıfından çok daha yavaş çalışıyor. Çok yoğun verilerle çalışıyorsanız tavsiye etmem. Bana göre  Dictionary  kullanıp sonradan sıralı halini almak daha iyi bir seçim. Yine de seçim sizin tabiki. Ben altta her ikisi için de örnekler vereceğim. Bir Dictionary nesnesinin elemanlarına  anahtara  göre sıralı halde ulaşmak static void Main(string[] args)
{
    // Bir sözlük oluştur.
    Dictionary dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("masa", 30);
    dictionary.Add("sandalye", 5);
    dictionary.Add("fare", 13);
    // Anahtarları List sınıfından bir örneğe çevir
    // (List<String> döndürür ama tiplerle uğraşmak istemezseniz değişkeni var ile tanımlayın)
    var list = dictionary.Keys.ToList();
    // List nesnesini sırala
    list.Sort();
    
     // Eğer anahtar adlarında Türkçe karakterler (çşğı vs.) listenin sıralamasını
    // aşağıdaki gibi yapmalısınız.
    // list.Sort(StringComparer.Create(new System.Globalization.CultureInfo("tr-TR"), true));
 
    // Liste elemanlarını sıradan gezerek listedeki anahtara
    // sahip olan değerleri yaz.
    foreach (var key in list)
    {
        Console.WriteLine("{0}: {1}", key, dictionary[key]);
    }
    Console.ReadLine();
} İkinci ve daha kısa bir yol. static void Main(string[] args)
{
    // Bir sözlük oluştur.
    var dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("çasa", 30);
    dictionary.Add("ıandalye", 5);
    dictionary.Add("fare", 13);
    // LINQ sorgusuyla anahtara göre sıralı bir liste (IEnumerable) oluştur.
    var items = dictionary.OrderBy(i =>  i.Key );
    foreach (var item in items)
    {
        Console.WriteLine("{0}: {1}", item.Key, item.Value);
    }
    Console.ReadLine();
} Bir Dictionary nesnesinin elemanlarına  değere  göre sıralı halde ulaşmak Bunun için  LINQ  ve  Lambda İfadeleri 'nden yararlanmak lazım. static void Main(string[] args)
{
    // Bir sözlük oluştur.
    var dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("çasa", 30);
    dictionary.Add("ıandalye", 5);
    dictionary.Add("fare", 13);
    // LINQ sorgusuyla sıralı bir liste (IEnumerable) oluştur.
    var items = from pair in dictionary
                orderby pair.Value ascending
                select pair;
    // Sonuçları göster
    foreach (KeyValuePair<string, int> pair in items)
    {
        Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
    }
    Console.ReadLine();
}
 using kısmına System.Linq isim alanını dahil etmeyi unutmayın.
 Veya daha kısa olarak şöyle yapılabilir. static void Main(string[] args)
{
    // Bir sözlük oluştur.
    var dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("çasa", 30);
    dictionary.Add("ıandalye", 5);
    dictionary.Add("fare", 13);
    // LINQ sorgusuyla anahtara göre sıralı bir liste (IEnumerable) oluştur.
    var items = dictionary.OrderBy(i =>  i.Value );
    foreach (var item in items)
    {
        Console.WriteLine("{0}: {1}", item.Key, item.Value);
    }
    Console.ReadLine();
}
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
13.04.16 11:06
C#  Dictionary  sınıfının bir sıralama özelliği veya yöntemi yok. Ancak  Dictionary 'nin yeni bir şekli olan  SortedDictionary  ile değerlerin otomatik olarak anahtara göre sıralı halini elde edebilirsin. Ancak  SortedDictionary   Dictionary   sınıfından çok daha yavaş çalışıyor. Çok yoğun verilerle çalışıyorsanız tavsiye etmem. Bana göre  Dictionary  kullanıp sonradan sıralı halini almak daha iyi bir seçim. Yine de seçim sizin tabiki. Ben altta her ikisi için de örnekler vereceğim. Bir Dictionary nesnesinin elemanlarına  anahtara  göre sıralı halde ulaşmak static void Main(string[] args)
{
    // Bir sözlük oluştur.
    Dictionary dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("masa", 30);
    dictionary.Add("sandalye", 5);
    dictionary.Add("fare", 13);
    // Anahtarları List sınıfından bir örneğe çevir
    // (List<String> döndürür ama tiplerle uğraşmak istemezseniz değişkeni var ile tanımlayın)
    var list = dictionary.Keys.ToList();
    // List nesnesini sırala
    list.Sort();
    
     // Eğer anahtar adlarında Türkçe karakterler (çşğı vs.) listenin sıralamasını
    // aşağıdaki gibi yapmalısınız.
    // list.Sort(StringComparer.Create(new System.Globalization.CultureInfo("tr-TR"), true));
 
    // Liste elemanlarını sıradan gezerek listedeki anahtara
    // sahip olan değerleri yaz.
    foreach (var key in list)
    {
        Console.WriteLine("{0}: {1}", key, dictionary[key]);
    }
    Console.ReadLine();
} İkinci ve daha kısa bir yol. static void Main(string[] args)
{
    // Bir sözlük oluştur.
    var dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("çasa", 30);
    dictionary.Add("ıandalye", 5);
    dictionary.Add("fare", 13);
    // LINQ sorgusuyla anahtara göre sıralı bir liste (IEnumerable) oluştur.
    var items = dictionary.OrderBy(i =>  i.Key );
    foreach (var item in items)
    {
        Console.WriteLine("{0}: {1}", item.Key, item.Value);
    }
    Console.ReadLine();
} Bir Dictionary nesnesinin elemanlarına  değere  göre sıralı halde ulaşmak Bunun için  LINQ  ve  Lambda İfadeleri 'nden yararlanmak lazım. static void Main(string[] args)
{
    // Bir sözlük oluştur.
    var dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("çasa", 30);
    dictionary.Add("ıandalye", 5);
    dictionary.Add("fare", 13);
    // LINQ sorgusuyla sıralı bir liste (IEnumerable) oluştur.
    var items = from pair in dictionary
                orderby pair.Value ascending
                select pair;
    // Sonuçları göster
    foreach (KeyValuePair<string, int> pair in items)
    {
        Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
    }
    Console.ReadLine();
}
 using kısmına System.Linq isim alanını dahil etmeyi unutmayın.
 Veya daha kısa olarak şöyle yapılabilir. static void Main(string[] args)
{
    // Bir sözlük oluştur.
    var dictionary = new Dictionary<string, int>();
    // Sözlüğe bazı değerler ekle.
    dictionary.Add("klavye", 22);
    dictionary.Add("ekran", 11);
    dictionary.Add("çasa", 30);
    dictionary.Add("ıandalye", 5);
    dictionary.Add("fare", 13);
    // LINQ sorgusuyla anahtara göre sıralı bir liste (IEnumerable) oluştur.
    var items = dictionary.OrderBy(i =>  i.Value );
    foreach (var item in items)
    {
        Console.WriteLine("{0}: {1}", item.Key, item.Value);
    }
    Console.ReadLine();
}
Ekleyen: cevapsitesi
 
En fazla 3 eski durum gösterilir.