none
Tarih sıralama RRS feed

  • Genel Tartışma

  • Merhaba listbox1 'imin icerigi aşagıdaki şekildedir ben bu tarihleri kücükten büyüge doğru sıralamak istiyorum ne kadar algoritma yazmaya calışsamda bi türlü beceremedim şimdiden yardımlarınız için çok minnettarım

    listbox1 içerigi tarihler örnektir

    -15 eylül cuma 2020

    15 eylül cuma 2020

    16 eylül cumartesi 2020

    25 eylül pazar 2020

    15 eylül cuma 2021

    13 eylül çarşamba 2020


    Tek amacım Ekmek param Programcılık zor iş derler Parası yok derlerdi inanmazdım Saglık olsun

    6 Ekim 2020 Salı 10:09

Tüm Yanıtlar

  • aşağıdaki fonksiyonu kullanabilirisniz.

    private void sortListBoxItems(bool ascending)
    {
        List<object> items;
        items = ListBox1.Items.OfType<object>().ToList();
        ListBox1.Items.Clear();
        if (ascending)
        { ListBox1.Items.AddRange(items.OrderBy(i => i).ToArray()); }
        else
        { ListBox1.Items.AddRange(items.OrderByDescending(i => i).ToArray()); }
    }

    şu şekilde çağırabilirsiniz :

    sortListBoxItems(true); yada sortListBoxItems(false);


    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz


    6 Ekim 2020 Salı 10:15
  • Ferih bey öncelikle çok teşekkürler düşündügüm gibi calışmıyor beklentim şu şekilde

    listbox1 içerigi tarihler örnektir

    -15 eylül cuma 2020

    15 eylül cuma 2020

    16 eylül cumartesi 2020

    25 eylül pazar 2020

    15 eylül cuma 2021

    13 eylül çarşamba 2020

    sıralanmış listbox 1 icerigi

    13 eylül çarşamba 2020

    15 eylül cuma 2020

    15 eylül cuma 2020

    16 eylül cumartesi 2020

    25 eylül pazar 202015 eylül cuma 2021


    Tek amacım Ekmek param Programcılık zor iş derler Parası yok derlerdi inanmazdım Saglık olsun

    6 Ekim 2020 Salı 10:27
  • Eger o tarihler dogru olsaydi is cok basit olurdu:

    var tarihler = @"15 eylül salı 2020
    15 eylül salı 2020
    16 eylül çarşamba 2020
    25 eylül cuma 2020
    15 eylül çarşamba 2021
    13 eylül pazar 2020".Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();
    
    var siralanmis = tarihler.Select(t => DateTime.TryParse(t, 
    	new CultureInfo("tr-TR"), 
    	DateTimeStyles.None, out DateTime result) ? result : (DateTime?)null)
    .OrderBy(t => t);

    Ancak senin tarihlerin kafadan atma olmus. O zaman is biraz karisik hal aliyor:

    var tarihler = @"15 eylül cuma 2020
    15 eylül cuma 2020
    16 eylül cumartesi 2020
    25 eylül pazar 2020
    15 eylül cuma 2021
    13 eylül çarşamba 2020".Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();
    
    
    	Func<string, DateTime?> s2d = (s) => {
    		var sd = s.Split(' ').ToList();
    		sd.RemoveAt(2);
    
    		return DateTime.TryParse(string.Join(" ",sd), 
    			new CultureInfo("tr-TR"), DateTimeStyles.None, out DateTime result) ? result : (DateTime?)null;
    	};
    var siralanmis = tarihler.Select(s2d).OrderBy(t => t);
    lstTarihler.DataSource = null;
    lstTarihler.DataSource = siralanmis.Select(t => t.ToString("dd MMMM dddd yyyy", new CultureInfo("tr-TR")).ToList();



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.



    6 Ekim 2020 Salı 11:10
    Yanıtlayıcı
  • Çetin bey öncelikle ilginiz için çok teşekkür ederim üst satırdaki kodu yazdığımda parantez noktalı virgül gibi hatalarla karşılaşıyorum kodu bi türlü calıştıramadım sorunum ne olabilir visual studio 2008 c# kullanıyorum

    Tek amacım Ekmek param Programcılık zor iş derler Parası yok derlerdi inanmazdım Saglık olsun



    6 Ekim 2020 Salı 11:32
  • Onemsiz bir ayrinti, o kadarini da kendin duzeltebilirdin :(

    void Main()
    {
    	var tarihler = @"15 eylül cuma 2020
    15 eylül cuma 2020
    16 eylül cumartesi 2020
    25 eylül pazar 2020
    15 eylül cuma 2021
    13 eylül çarşamba 2020".Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();
    	Form f = new Form();
    	ListBox lstTarihler = new ListBox { DataSource = tarihler, Width = 200 };
    	Button b = new Button {Left = 220, Text="Sirala"};
    	f.Controls.Add(lstTarihler);
    	f.Controls.Add(b);
    
    
    	Func<string, DateTime?> s2d = (s) =>
    	{
    		var sd = s.Split(' ').ToList();
    		sd.RemoveAt(2);
    
    		return DateTime.TryParse(string.Join(" ", sd),
    			new CultureInfo("tr-TR"), DateTimeStyles.None, out DateTime result) ? result : (DateTime?)null;
    	};
    
    	b.Click += (sender, e) =>
    	{
    		var siralanmis = lstTarihler.Items.Cast<string>()
    			.Select(s2d)
    			.OrderBy(s => s)
    			.Select(t => ((DateTime)t).ToString("dd MMMM dddd yyyy", new CultureInfo("tr-TR")))
    			.ToList();
    		lstTarihler.DataSource = siralanmis;
    	};
    	f.Show();
    }

    Not: Burada asil hata, tarih gibi degerlerle ugrasmana ragmen listbox'a string doldurman ve bu stringlerin yanlis olmasi. Normal DateTime ile doldurabilir onun ToString'ini override edebilirdin.



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.


    6 Ekim 2020 Salı 12:36
    Yanıtlayıcı
  • Çetin bey cok özür diliyorum ama çözemedim yine :(


    Tek amacım Ekmek param Programcılık zor iş derler Parası yok derlerdi inanmazdım Saglık olsun

    6 Ekim 2020 Salı 12:52
  • DateTime result;

    diye tanimlamayi dene. Ne diye o kadar eski C# versiyonu kullaniyorsun ki? Tek bir iyi neden olsa anlarim.

    Anydesk ya da teamviewer ID v er hemen bakalim (fazla bekleyemem)



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.


    6 Ekim 2020 Salı 13:13
    Yanıtlayıcı