Avatar billede faering Nybegynder
25. november 2007 - 15:17 Der er 15 kommentarer og
1 løsning

Sortering af Array i C#

Hejsa ærede Eksperter!

Jeg har en kommasepereret .txt fil som jeg læser fra, hvor hver linie ser sådan ud:

1,1,1,Jonas Hansen,25,25,25,50
3,1,1,Claus Jensen,25,25,25,70
4,1,1,Jonas Swans,25,25,25,7

Mit array hvor jeg læser filen ind i, ser ud som følger:

            using (MyReader SR = new MyReader(GlobalVariables.Instance.sti.ToString() + GlobalVariables.Instance.point.ToString()))
            {
                string Line;
                string point;
                string sti;

                sti = (GlobalVariables.Instance.sti.ToString() + GlobalVariables.Instance.point.ToString());

                ArrayList list = new ArrayList();
                StreamReader f = new StreamReader(sti);
                string line;
                while ((line = f.ReadLine()) != null)
                {
                    list.Add(line);
                }
                f.Close();

                while ((Line = SR.ReadLine()) != null)
                {


Opgaven består i at sortere dette array så linierne bliver listet efter højeste-sidste score (endsWith?), er der to der har samme sidste score, sammenlignes næstsidste osv.

Er der nogen der kan hjælpe en C# dummy med dette? :o)
Avatar billede neoman Novice
25. november 2007 - 15:40 #1
Er det ikke nemmere at læse filen ind i en DataTable så  der er adgang til alt + sortering med et dataview ? http://www.eksperten.dk/spm/806676
Avatar billede faering Nybegynder
25. november 2007 - 15:48 #2
Tak for dit svar, men det må desværre ikke laves sådan. Det skal være i arrays
Avatar billede nielle Nybegynder
25. november 2007 - 16:07 #3
Noget i denne stil burde kunne gøre det:

        class MyComparer : IComparer
        {
            #region IComparer Members

            public int Compare(object x, object y)
            {
                string xStr = x as string;
                string yStr = y as string;

                string[] xArr = xStr.Split(',');
                string[] yArr = yStr.Split(',');

                string xLast = xArr[xArr.Length-1];
                string yLast = yArr[yArr.Length-1];

                int xScore = int.Parse(xLast);
                int yScore = int.Parse(yLast);

                return xScore.CompareTo(yScore);
            }

            #endregion
        }

og så:

list.Sort(new MyComparer());
Avatar billede nielle Nybegynder
25. november 2007 - 16:09 #4
Personlig ville jeg overveje at bruge en List<...> i stedet for en ArrayList samt at representere personerne som objekter af en Parson-klasse i stedet for at have dem som strenge.
Avatar billede juks Novice
26. november 2007 - 10:47 #5
hvorledes mener du nielle??
Avatar billede juks Novice
26. november 2007 - 10:57 #6
den skal jo helst , gøre det på alle poster i array , sender vi ikke kun 2 linje afsted her ??
Avatar billede nielle Nybegynder
26. november 2007 - 11:02 #7
26/11-2007 10:47:11> Til hvad?

26/11-2007 10:57:20> kaldet til list.Sort(...) vil sortere hele arrayet.
Avatar billede juks Novice
26. november 2007 - 11:09 #8
det med parson..... :-)

ahh ja nu har jeg fået den til at sortere den sortere bare stigende i stedet for faldene?
Avatar billede nielle Nybegynder
26. november 2007 - 11:12 #9
Prøv at ændre:

return xScore.CompareTo(yScore);

til:

return -xScore.CompareTo(yScore);

Det burde gerne give den modsatte sortereings rækkefølge.
Avatar billede juks Novice
26. november 2007 - 11:16 #10
nej det går ikke, ikke hvis de har samme navn så laver smider den den ene af dem øverst
Avatar billede juks Novice
26. november 2007 - 11:19 #11
men da de første 4 "," er faste og ikke skal sorteres på , kan man vel "bare" splitte indentil efter 4 komma ??
Avatar billede nielle Nybegynder
26. november 2007 - 11:26 #12
26/11-2007 11:16:56> Kan du give et eksempel på hvordan det går galt?

26/11-2007 11:19:04> Det er det min kodestump allerede gør...
Avatar billede juks Novice
26. november 2007 - 11:40 #13
ja sorry det var mig der lavede noget rod det virker perfekt.  ....
bukker herfra :-)
Avatar billede juks Novice
26. november 2007 - 11:40 #14
kom til at skrive listen for tidligt :-)
Avatar billede faering Nybegynder
26. november 2007 - 13:22 #15
Nielle smider du lige et svar? :)
Avatar billede nielle Nybegynder
26. november 2007 - 13:38 #16
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