Difference between revisions of "6237 Programmering II (Csharp) Agenda/List sort/find"
From Teknologisk videncenter
(Created page with "===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 ...") |
m (added Category:Csharp using HotCat) |
||
(8 intermediate revisions by one other user not shown) | |||
Line 17: | Line 17: | ||
</source> | </source> | ||
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. | 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 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang=csharp> | <source lang=csharp> | ||
− | + | 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")); | |
− | |||
} | } | ||
</source> | </source> | ||
− | + | 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. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang=csharp> | <source lang=csharp> | ||
static void Main(string[] args) | static void Main(string[] args) | ||
Line 121: | Line 51: | ||
pLst.Add(p3); | 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) =>(String.Compare(x.Navn,y.Navn)); | + | pLst.Sort((x, y) => |
+ | { | ||
+ | if (x.Navn != y.Navn) return String.Compare(x.Navn, y.Navn); | ||
+ | return String.Compare(x.Email, y.Email); | ||
+ | }); | ||
} | } | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | Alternativt kan man vælge at sortere med delegates | ||
+ | |||
+ | [[/Sort_with_delegate|Sort with delegate]] | ||
+ | [[Category:6237 Programmering II]] | ||
+ | [[Category:Csharp]] |
Latest revision as of 13:28, 18 February 2016
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