• 28-05-2015, 18:30:29
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba arkadaşlar. C# da okey oyunu yazıyorum. Bir adet 2 boyutlu dizim var. Bunun içinde oyuncuların ıstakasındaki taşları tutuyorum. İlk boyutta oyuncu kutbu ve taş listesi ikinci kutupda ise taşın anahtarı (key) ve belirlediğim tas tipi (class) var. Taş tipinin içinde her taşa ait değerler var (numara,renk,ıstakadaki sırası vs. vs) Aşağıda kod olarak eklicem. Taşları küçükten büyüğe sıralamak istiyorum. Ne yaptıysam yapamadım. Sıralanmıyor. Yardımlarınızı bekliyorum.
    Dictionary<int, Dictionary<int, tas>> taslar = this.tasGrupla(this.kutup_tas_listesi[kutup]);
    foreach (KeyValuePair<string,Dictionary<int,tas>> item in taslar)
    {
        taslar[item.Key].OrderBy(k => k.Value.numara);
                    
    }
  • 28-05-2015, 19:20:26
    #2
    Merhaba,

    Bu şekilde dictionary kullanmak pek doğru gözükmedi bana, daha çok Tuple kullanırsaniz daha faydalı olur ancak,

    Taşın anahtarı dediğiniz değere göre sıralamayı planlıyorsanız, SortedDictionary kullanmanız daha kolay olacaktır. SortedDictionary keye göre otomatik sıralıyor eklenen değerleri.

    Kolay gelsin.
  • 28-05-2015, 20:35:48
    #3
    Merhaba,
    Öncelikle cevabınız için teşekkür ederim sayın lyzerk. Sıralama işlemini anahtara göre değil de tas tipinin içindeki numara değişkenine göre yapmak istiyorum. Tuple ı bilmiyorum. Onu araştırayım teşekkürler
  • 30-05-2015, 01:17:33
    #4
    taslar = taslar.OrderByDescending(x => x.Value.numara)
    .ToDictionary(x => x.Key, x => x.Value);

    denemedim ama bu şekilde bir mantıkla gideceksin
  • 01-06-2015, 20:01:01
    #5
    selam neden bu kadar kasma gereği duyuyorsunuz anlamadım. tuple vs ye neden gerek var.
    bi class yaz MyClass adında, List<MyClass> olarakta içerisinde değrler tut olsun bitsin.
    dictionary tipinde ki datalarda sıralama yapman biraz seni yoracaktır.
    List olarak tutarsan direk OrderByDescending(x => x.Value) şeklinde kolayca sıralayabilirsin.
    ayrıca datayı ekleme çıkarma yaparkende sana kolaylık sağlayacaktır.
    Takıldığın nokta olursa yardımcı olurum.
    Kolay gelsin.