Kan en parameter sortera i min lista?

Permalänk

Kan en parameter sortera i min lista?

Hej! Är det möjligt att i en metod ta emot en parameter som sorterar om i min lista? Har läst på lite om IEnumerable, men är osäker på om detta är lämpligt och vidare hur det används i praktiken. Det jag vill göra är skapa _en_ metod som delar ut poäng och parametern för metoden ska dela ut dessa poäng genom att sortera min lista av personer efter olika properties, t.ex. ålder eller namn.

Permalänk
Medlem

Gissar Skoluppgift, om det är något specifikt du behöver hjälp med är det lättare om du först visar vad du gjort i kod sedan förklarar vad du vill göra och resultatet du vill ha och från det får hjälp med hur du ska tänka mm.

Allmänt är det möjligt att sortera en lista baserat på olika värden och det går att välja vilket värde som ska användas men implementationen kan variera beroende på vad målet är.

Visa signatur

"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood

Permalänk
Vila i frid

Du kan t.ex. anropa sorteringsfunktionen med en sorteringsordningparameter

public enum sortMethod { sortbyFirstName, sortbyLastName, sortbyAge } sortera(minlista,sortMethod.sortbyAge)

Permalänk
Skrivet av Ferrat:

Gissar Skoluppgift, om det är något specifikt du behöver hjälp med är det lättare om du först visar vad du gjort i kod sedan förklarar vad du vill göra och resultatet du vill ha och från det får hjälp med hur du ska tänka mm.

Allmänt är det möjligt att sortera en lista baserat på olika värden och det går att välja vilket värde som ska användas men implementationen kan variera beroende på vad målet är.

Jag har för tillfället fyra metoder som sorterar min lista utifrån olika properties;

public void DistributePointsByAge(int pts) { People = People.OrderBy(x => x.Age).ToList(); PointsDistributed(pts); }

PointsDistributed är min generella metod som delar ut poängen. Samtliga "sorterings"- metoder ser ut som ovan och sorterar listan efter x.Name etc. Det jag vill testa är att i min PointsDistributed metod istället ta emot en parameter som sköter sorteringen och således kunna ta bort mina fyra sorteringsmetoder som mer eller mindre gör samma sak för tillfället (sorterar). Jag har försökt lägga in OrderBy() i parametern men det fungerar såklart inte.

Permalänk
Medlem
Skrivet av Elliedoso:

Jag har för tillfället fyra metoder som sorterar min lista utifrån olika properties;

public void DistributePointsByAge(int pts) { People = People.OrderBy(x => x.Age).ToList(); PointsDistributed(pts); }

PointsDistributed är min generella metod som delar ut poängen. Samtliga "sorterings"- metoder ser ut som ovan och sorterar listan efter x.Name etc. Det jag vill testa är att i min PointsDistributed metod istället ta emot en parameter som sköter sorteringen och således kunna ta bort mina fyra sorteringsmetoder som mer eller mindre gör samma sak för tillfället (sorterar). Jag har försökt lägga in OrderBy() i parametern men det fungerar såklart inte.

Grov överkurs, men läs på om delegates.
M.h.a. sådana kan du helt enkelt anropa din metod där du skickar det lambda-uttryck som används för sorteringen som en parameter.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W