Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Cevap Geçmişi

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.