bjartesi Skrevet 23. april 2009 Del Skrevet 23. april 2009 Jeg holder på med et program her der jeg blant annet har behov for å sortere en tabell bestående av objekter som datatype. Jeg har lyst å sortere tabellen på brukernavn eller dato....noen som kan hjelpe med dette? Her er administartorklassen til programmet mitt: namespace Øving_2 { using System; public class Administrator { private Brukernavn[] brukernavnTabell; private Passord[] passordTabell; private Dato[] datoTabell; private int used; public Administrator() { int size = 0; this.used = 0; this.brukernavnTabell = new Brukernavn[size]; this.passordTabell = new Passord[size]; this.datoTabell = new Dato[size]; } public void LeggTil(Brukernavn brukernavn, Passord passord, Dato dato) { enlargeIfFull(); this.brukernavnTabell[used] = brukernavn; this.passordTabell[used] = passord; this.datoTabell[used] = dato; this.used++; } public int brukte() { return this.used; } public Brukernavn skrivUtBrukernavn(int i) { return this.brukernavnTabell[i]; } public Passord skrivUtPassord(int i) { return this.passordTabell[i]; } public Dato skrivUtDato(int i) { return this.datoTabell[i]; } public Brukernavn this[Passord passord] { get { int i = Array.IndexOf(this.passordTabell, passord); if (i != -1) { return this.brukernavnTabell[i]; } else return new Brukernavn(); } } public Passord this[brukernavn brukernavn] { get { int i = Array.IndexOf(this.brukernavnTabell, brukernavn); if (i != -1) { return this.passordTabell[i]; } else return new Passord(); } } public bool EndrePassord(Brukernavn brukernavn, string nyttPassord, Dato dato) { int i = Array.IndexOf(this.brukernavnTabell, brukernavn); if (i != -1) { this.passordTabell[i].EndrePassord(new Passord(nyttPassord)); this.datoTabell[i] = dato; return true; } else return false; } public Dato visDato(Brukernavn brukernavn) { int i = Array.IndexOf(this.brukernavnTabell, brukernavn); if (i != -1) { return this.datoTabell[i]; } else return new Dato(); } private void enlargeIfFull() { if (this.used == this.brukernavnTabell.Length) { int bigger = used + 16; Brukernavn[] flereBrukernavn = new Brukernavn[bigger]; this.brukernavnTabell.CopyTo(flereBrukernavn, 0); Passord[] flerePassord = new Passord[bigger]; this.passordTabell.CopyTo(flerePassord, 0); Dato[] flereDatoer = new Dato[bigger]; this.datoTabell.CopyTo(flereDatoer, 0); this.brukernavnTabell = flereBrukernavn; this.passordTabell = flerePassord; this.datoTabell = flereDatoer; } } } } Lenke til kommentar
geir__hk Skrevet 23. april 2009 Del Skrevet 23. april 2009 Vet du hvordan du sorterer en tabell bestående av vanlige tall (integer for ex)? Med objekt så blir det stortsett det samme, bortsett fra at du må bruke en funksjon som tester to stringer opp mot hverandre. Hva den funksjonen kalles i C# er jeg dog ikke sikker på. Er selv vant med StrComp() fra vbs, men kan ikke garantere at det er det samme. Lenke til kommentar
GeirGrusom Skrevet 24. april 2009 Del Skrevet 24. april 2009 Det er VELDIG klumsete at du bruker arrays og flere tabeller. Gjør det om til en klasse, og bruker List istedet, da kan du bruker Sort funksjonen, for eksempel slik: bruker_liste.Sort((a, b) => a.Brukernavn.CompareTo(b.Brukernavn)) Lenke til kommentar
bjartesi Skrevet 24. april 2009 Forfatter Del Skrevet 24. april 2009 Det er VELDIG klumsete at du bruker arrays og flere tabeller. Gjør det om til en klasse, og bruker List istedet, da kan du bruker Sort funksjonen, for eksempel slik: bruker_liste.Sort((a, b) => a.Brukernavn.CompareTo(b.Brukernavn)) Skjønte ikke helt det med å gjøre om til klasse...kan du utdype dette litt? Lenke til kommentar
GeirGrusom Skrevet 24. april 2009 Del Skrevet 24. april 2009 (endret) public class User { protected string m_username; protected byte[] m_pwd_hash; public static byte[] ComputePasswordHash(string password) { var md5 = System.Security.Cryptography.MD5.Create(); return md5.ComputeHash(password); } public string Username { get { return m_username; } } public byte[] PasswordHash { get { return m_pwd_hash; } } public User(string username, string password) { m_username = username; m_pwd_hash = ComputePasswordHash(password); } } public static class Program { public static void Main() { var users = new List<User>(); users.Add(new User("root", "abc123")); users.Add(new User("administrator", "abc123")); users.Add(new User("Ole", "abc123")); // Sorter etter brukernavn users.Sort((a, b) => a.Username.CompareTo(b.Username)); } } Endret 24. april 2009 av GeirGrusom Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå