Avatar billede cdull Nybegynder
20. juni 2006 - 13:46 Der er 8 kommentarer og
1 løsning

collection til årskalender

Jeg har indtil videre brugt en hashtable til at indeholde datoer til en kalender jeg laver for sjov.
Nu er jeg løbet ind i det problem at bruger har mulighed for at taste to datoer, som lægges ind i f.eks perioder. Det skulle gerne udgøre hele året.

Kan jeg få en collection i stil med hashtable hvor jeg kan lave foreach på alt data hvor de laveste værdier kommer først. F.eks laveste værdier af datoer. En form for ASC
Avatar billede nielle Nybegynder
20. juni 2006 - 17:52 #1
Hvis du laver din HashTable collection om til en List<DateTime> liste så kan man faktisk lave sådan en sortering ganske nemt.
Avatar billede nielle Nybegynder
20. juni 2006 - 18:06 #2
Et eksempel:

using System;
using System.Collections.Generic;

namespace e716526
{
    class Program
    {
        static List<DateTime> kalender = new List<DateTime>();

        static void Main(string[] args)
        {
            kalender.Add(DateTime.Now);
            kalender.Add(DateTime.Now.AddDays(-10));
            kalender.Add(DateTime.Now.AddMinutes(2));
            kalender.Add(DateTime.Now.AddMonths(2));
            kalender.Add(new DateTime(1912, 4, 14));

            Console.WriteLine("Usorteret:");
            foreach (DateTime dato in kalender)
            {
                Console.WriteLine(dato);
            }

            // Datoerne sorteres i stigende orden:
            Comparison<DateTime> stigendeSortering = new Comparison<DateTime>(SorterStigende);
            kalender.Sort(stigendeSortering);

            Console.WriteLine();
            Console.WriteLine("Sorteret");
            foreach (DateTime dato in kalender)
            {
                Console.WriteLine(dato);
            }
        }

        public static int SorterStigende(DateTime dato1, DateTime dato2)
        {
            if (dato1 < dato2)
                return -1;
            else if (dato2 < dato1)
                return 1;
            else
                return 0;
        }
    }
}
Avatar billede nielle Nybegynder
20. juni 2006 - 18:07 #3
Du behøver selvfølgelig ikke at bruge DateTime - du kan bare erstatte alle forkomster med din egen klasse som repræsenterer en kalender-dato.
Avatar billede arne_v Ekspert
21. juni 2006 - 01:45 #4
Hvad med SortedDictionary<DateTime,Appointment> ?
Avatar billede nielle Nybegynder
21. juni 2006 - 07:16 #5
Mjaa, jeg ville nok foretrække en løsning hvor tidspunktet(erne) er en integreret del af aftalen; DateTime-feltet skulle altså indgå i Appointment-objektet. Men så dur SortedDictionary ikke rigtig.

En anden fordel ved:

static List<Appointment> kalender = new List<Appointment>();

- ville være at man, uden de store problemer, kunne vælge at sortere aftalerne efter forskellige kriterier ved simpelthen at implementer og bruge et tilsvarende antal Comparison<Appointment> på kalender-listen.
Avatar billede arne_v Ekspert
22. juni 2006 - 02:45 #6
Jeg synes nu at det er en stor fordel at kunne finde en given dato direkte.

Og selvfølgelig skal Appointment klassen have et DateTime felt, men det forhindrer
ikke at man også bruger det som key.
Avatar billede nielle Nybegynder
29. juni 2006 - 18:04 #7
Hvad med noget respons?
Avatar billede cdull Nybegynder
12. september 2006 - 09:46 #8
Arne_v smid et svar.
Brugte sorteddictionary
Avatar billede arne_v Ekspert
12. september 2006 - 21:50 #9
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester