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.