Elimde "130000001.txt, 130000002.txt, 130000003.txt ..." şeklinde dosya isimlerinden oluşan bir string dizisi var. Bunlardan başka 12 ile başlayan ("120000001.txt") başka kayıtlar da var. Bana 13 ile başlayan kayıtların sonuncusu lazım ama elemanlar dizinin içinde küçükten büyüğe doğru sıralı. Performans açısından tüm dosya adlarını taramak da handikap.

Bu dosya adlarını büyükten küçüğe doğru nasıl sıralayabilirim?

soruldu: 18 Ara '12, 02:42

mhkoca60's gravatar image

mhkoca60
1.8k264554
cevap kabul oranı: 15%


Şöyle bir çözüm buldum:

Sıralamak istediğim dizi dosyalar.

Array fileList= dosyalar.ToArray();
Array.Sort(fileList);
Array.Reverse(fileList);
permanent link

cevaplandı: 18 Ara '12, 06:24

mhkoca60's gravatar image

mhkoca60
1.8k264554
cevap kabul oranı: 15%

2

Evet çok daha kullanışlı. ben böyle birşey olduğunu bilmiyordum o yüzden kendim yaptım :) Ama diğer dizi şeklinde yani arraylist olarak değil de String[] şeklindeki dizilerde benim gösterdiğim yöntemi kullanabilirsiniz.

İyi çalışmalar

(18 Ara '12, 06:37) creseos creseos's gravatar image

Forma 1 adet buton ve bir adet listbox koyup şu kodlarla yaptım. (Listboxu deneme amaçlı, görmen için koydum. elemanları diziye sıralıyor)

 private void button1_Click(object sender, EventArgs e)//Buton1 Click
        {
            string[] dizi = new string[10];//dizi

            dizi[0] = "100001.txt";
            dizi[1] = "100002.txt";
            dizi[2] = "100010.txt";
            dizi[3] = "100003.txt";
            dizi[4] = "100004.txt";
            dizi[5] = "100007.txt";
            dizi[6] = "100008.txt";
            dizi[7] = "100005.txt";
            dizi[8] = "100006.txt";
            dizi[9] = "100009.txt";

            //2 adet döngü oluşturdum her elemanı birbiriyle karşılaştırıyor.
            string[] siraliDizi = new string[10];
            for (int i = 0; i < dizi.Length; i++)
            {
                string enBuyuk = dizi[i];
                for (int j = 0; j < dizi.Length; j++)
                {
                    if (siralilardaVarmiKontrol(siraliDizi, enBuyuk)) enBuyuk = dizi[j];

                    if (Convert.ToInt32(enBuyuk.Split('.')[0]) > Convert.ToInt32(dizi[j].Split('.')[0]))
                    {
                        //enBuyuk = dizi[i];
                    }
                    else
                    {
                        if (!siralilardaVarmiKontrol(siraliDizi, dizi[j])) enBuyuk = dizi[j];
                    }
                }
                siraliDizi[i] = enBuyuk;
                listBox1.Items.Add(enBuyuk);
            }

        }
        private bool siralilardaVarmiKontrol(String[] dizi, string eleman)//Burada sıralama dizisinde olup olmadığını kontrol ediyorum
        {
            bool var = false;
            for (int i = 0; i < dizi.Length; i++)
            {
                if (eleman == dizi[i]) { var = true; break; }
            }

            return var;
        }

SONUÇ:

Sonuç

permanent link

cevaplandı: 18 Ara '12, 05:46

creseos's gravatar image

creseos
2.0k468187
cevap kabul oranı: 37%

değiştirildi: 18 Ara '12, 05:54

1

Cevabunız için teşekkürler. Ben aşağıdaki gibi çok kısa bir çözüm buldum.

(18 Ara '12, 06:25) mhkoca60 mhkoca60's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×238
×12

Soruldu: 18 Ara '12, 02:42

Görüntüleme: 2,663 kez

Son güncelleme: 18 Ara '12, 06:37

powered by BitNami OSQA