Difference between revisions of "6237 Programmering II (Csharp) Agenda/List sort/find"

From Teknologisk videncenter
Jump to: navigation, search
(List sort/find)
(List sort/find)
Line 19: Line 19:
  
  
Det kræver dog at vi først oprette en "delegate" det vil sige en metode der kan hjælpe programmet med at sammenligne to objekter. Metoden tager to objekter at type person og returnerer -1, 1 eller 0 afhængig af hvilket objekt som er størst på den parameter der sammenlignes på.
 
Her ses metoderne SortByName og SortByEmail.
 
Sortering foregår således.
 
  
 
[[/Sort_with_delegate|Sort with delegate]]
 
[[/Sort_with_delegate|Sort with delegate]]

Revision as of 12:58, 7 October 2015

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.


Sort with delegate

Endelig kan man anvende lambda expressions

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);

	Person p = pLst.Find(x =>(x.Navn == "Holger"));

        //Eller evt.
        pLst.Sort((x,y) =>(String.Compare(x.Navn,y.Navn));
}