Laden...

Array mit mehreren Objecten nach bestimmten Value sortieren

Erstellt von LordHexa vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.050 Views
LordHexa Themenstarter:in
55 Beiträge seit 2006
vor 14 Jahren
Array mit mehreren Objecten nach bestimmten Value sortieren

Hallo zusammen,

ich habe bereits die Suchfunktion benutzt, aber leider nichts passendes für mein Problemfall gefunden oder nichts gefunden, das meiner Meinung nach mein Problem lösen könnte.

Folgendes Szenario:
Ich habe ein Webportal auf dem man nach Produkten suchen kann. Die Suchergebnisse liefert mir eine externe API. Diese API gibt mir einen Array Products[] zurück. Products[] besitzt Objekte names Product mit z.B. diesen Eigenschaften: ProdID, Title, Price, Description. Leider bietet mir die API nur die Möglichkeit, das die Ergebnisse nach Title oder Price sortiert werden. Intern sucht die API das übergebene Suchtwort in Title und Description. Daraus resultiert natürlich, das die Ergebnisqualität, gelinde gesagt, suboptimal ist.

Die Lösung:
Ich erstelle mir ein eigenes Object names AdvancedProduct welches von Product erbt und um die Eigenschaft RelevancePoints erweitert wird. Wie diese RelevancePoints ermittelt werden ist für das Problem nicht relevant.

Das Problem:
Ich möchte nun mein Object AdvancedProduct in Products[] übergeben. Dies allerdings Absteigend nach RelevancePoints sortiert. Und genau hier stehe ich grad auf dem Schlauch.

Sollte etwas unverständlich sein, bitte nachfragen 😃

Beste Grüße

T
210 Beiträge seit 2006
vor 14 Jahren

Ich bin mir nicht sicher, aber wäre nicht folgende Lösung das richtige:

System.Array.Sort(array, (p1, p2) => p1.Relevance - p2.Relevance);

Ich gehe dabei davon aus das dein Product ein Feld oder Property vom Typ int mit Namen "Relevance" hat.

Gruß
Tony

T
210 Beiträge seit 2006
vor 14 Jahren

Oh, sehe gerade, dass es Absteigend sein soll.
Dann

p2.Relevance - p1.Relevance

T-Man

297 Beiträge seit 2008
vor 14 Jahren

Wenn du deine AdvancedProduct-Objekte bereits in einem Array oder einer Liste hast, kannst du diese einfach mit LINQ sortieren lassen.

var sortedProducts = myAdvancedProdutcsArray.Sort(item => item.RelevancePoints);

Eventuell noch mit

.Reverse();

hintendran.

Dann hast du eine sortierte Liste mit deinen Items, die du dann weiter verarbeiten kannst.

There are 10 kind of people, those who understand binary and those who don't.