Avatar billede hmortensen Nybegynder
15. juli 2006 - 22:31 Der er 2 kommentarer og
1 løsning

Sortering med to kriterier

Hej

Jeg har en generisk liste af objecter jeg ønsker sorteret.
Der skal sorteres efter to string egenskaber, ala. SQL's 'ORDER BY felt1, felt2'.

En der kan komme med et eksempel på det?


Mvh.
H. Mortensen
Avatar billede nielle Nybegynder
15. juli 2006 - 23:30 #1
Noget i denne stil?

using System;
using System.Collections.Generic;
using System.Text;

namespace e720830
{
    class Program
    {
        static void Main(string[] args)
        {
            List<MyClass> myClassList = new List<MyClass>();

            myClassList.Add(new MyClass("alfa", "beta"));
            myClassList.Add(new MyClass("gamma", "delta"));
            myClassList.Add(new MyClass("epsilon", "eta"));

            myClassList.Add(new MyClass("bb", "bb"));
            myClassList.Add(new MyClass("bb", "bc"));
            myClassList.Add(new MyClass("bb", "ba"));
            myClassList.Add(new MyClass("cc", "bb"));
            myClassList.Add(new MyClass("cc", "ab"));
            myClassList.Add(new MyClass("ff", "ab"));

            Console.WriteLine("Før:");
            foreach (MyClass myClass in myClassList)
            {
                Console.WriteLine(myClass);
            }

            Console.WriteLine();

            Comparison<MyClass> orderByFelt1Felt2 = new Comparison<MyClass>(OrderByFelt1Felt2);
            myClassList.Sort(orderByFelt1Felt2);

            Console.WriteLine("Efter:");
            foreach (MyClass myClass in myClassList)
            {
                Console.WriteLine(myClass);
            }
        }

        public static int OrderByFelt1Felt2(MyClass myClass1, MyClass myClass2)
        {
            int compare1 = myClass1.felt1.CompareTo(myClass2.felt1);
            if (compare1 != 0)
                return compare1;
            else
            {
                int compare2 = myClass1.felt2.CompareTo(myClass2.felt2);
                return compare2;
            }
        }
    }

    class MyClass
    {
        public string felt1;
        public string felt2;

        public MyClass(string felt1, string felt2)
        {
            this.felt1 = felt1;
            this.felt2 = felt2;
        }

        public override string ToString()
        {
            return string.Format("{0};{1}", felt1, felt2);
        }
    }
}
Avatar billede hmortensen Nybegynder
16. juli 2006 - 02:49 #2
Tak for hjælpen. Ser ud til at virke som det skal.
Du må gerne smide et svar.
Avatar billede nielle Nybegynder
16. juli 2006 - 08:43 #3
Svar :^)
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