6237 Programmering II (Csharp) Agenda/List sort/find
From Teknologisk videncenter
< 6237 Programmering II (Csharp) Agenda(Redirected from 6237 Programmering II List sort/find)
List sort/find
Når vi har oprette klassen Person kan vi også lave en liste af personer. Da både larer og elev nedarver fra Person kan vi også gemme disse i listen. Det foregår sådan her.
static void Main(string[] args)
{
Laerer l1 = new Laerer("Tommy", "tommys@mail.dk", 25000);
Elev e1 = new Elev("Jens", "jens@mail.dk", "Hold1");
Person p1 = new Laerer("Holger", "holgers@mail.dk",230000);
List<Person> pLst = new List<Person>();
pLst.Add(p1);
pLst.Add(e1);
pLst.Add(l1);
}
Det smarte ved at sætte personer i en list er at vi nu kan anvende indbyggede funktioner i list til at sortere og søge i listen. Den nemmeste måde er at anvende lambdaexpressions
static void Main(string[] args)
{
Person p1 = new Person("Tommy", "tommys@mail.dk");
Person p2 = new Person("Jens", "jens@mail.dk");
Person p3 = new Person("Holger", "holgers@mail.dk");
List<Person> pLst = new List<Person>();
pLst.Add(p1);
pLst.Add(p2);
pLst.Add(p3);
//Her findes første person i listen med navnet Holger
Person holger = pLst.Find(x =>(x.Navn == "Holger"));
//Her findes alle personer med navnet Holger
List<Person> holgerLst = pLst.FindAll(x =>(x.Navn == "Holger"));
}
På samme måde kan vi anvende listen til at sortere vores personer. Det eneste vi skal gøre at at lave et lambdaexpression der fortæller hvordan vi vil sortere.
static void Main(string[] args)
{
Person p1 = new Person("Tommy", "tommys@mail.dk");
Person p2 = new Person("Jens", "jens@mail.dk");
Person p3 = new Person("Holger", "holgers@mail.dk");
List<Person> pLst = new List<Person>();
pLst.Add(p1);
pLst.Add(p2);
pLst.Add(p3);
//Her sorteres listen på personens navn
pLst.Sort((x,y) =>(String.Compare(x.Navn,y.Navn));
//Hvis der er ens navne kan vi vælge at sortere på emails
pLst.Sort((x, y) =>
{
if (x.Navn != y.Navn) return String.Compare(x.Navn, y.Navn);
return String.Compare(x.Email, y.Email);
});
}
Alternativt kan man vælge at sortere med delegates