2016-04-19 11 views
0

Ich habe ein Hauptfenster mit 4 Instanzen einer Fabrik. Die Fabriken haben noch eine Zeit zu wissen, wann sie fertig sind. Die Fabriken haben eine Methode bekommen, die dort noch Zeit bleibt. Ich rufe die Methoden für alle 4 Instanzen in meiner Hauptklasse auf, also bekomme ich 4 Doubles, die die Sekunden enthalten, die auf jeder Fabrik übrig sind.Anzeige der Timer in der Reihenfolge der verbleibenden Zeit

Jetzt möchte ich die Reihenfolge anzeigen, wenn die Fabriken fertig sind. Like:

1. - Werk 3

2. - Werk 1

3. - Factory 2

4. - Factory 4

Ich habe für jede Position 4 Etiketten bekommt. Wie kann ich berechnen, welche Fabrik zuerst, Sekunde usw. beendet wird. Und sie in das richtige Etikett setzen?

Alles, was mir einfällt, ist das Schreiben einer komplizierten if-Anweisung.

Ich habe versucht, eine Liste zu erstellen und sie nach Wert zu ordnen, aber auf diese Weise weiß ich nicht, welche Fabrik zu dem bestimmten Wert gehört.

Factory-Klasse:

public double getRemaining() 
    { 
     seconds = TimeSpan.Parse(lblRemaining1.Content.ToString()).TotalSeconds; 

     return seconds; 
    } 

Hauptklasse:

 public void calculateOrder() 
    { 
     remaining1 = Factory1.getRemaining(); 
     remaining2 = Factory2.getRemaining(); 
     remaining3 = Factory3.getRemaining(); 
     remaining4 = Factory4.getRemaining(); 


    } 
+0

Ihre 'Fabrik :: getRemaining()' nicht einmal sinnvoll, wenn alle vier von ihnen die gleichen Gesamt zurück von 'lblRemaining1'. – Xiaoy312

+0

Sie werden alle zu einem anderen Zeitpunkt gestartet und haben eine unterschiedliche Laufzeit, da sie Instanzen sind, die alle dasselbe Label haben. Ist das sinnvoll? – Yoshi

Antwort

1
var factories = new Factory[] { Factory1, Factory2, Factory3, Factory4 } 
    .OrderBy(x => x.getRemaining()) // or, you can use OrderByDescending 
    .ToArray(); 

remaining1 = factories[0].getRemaining(); 
remaining2 = factories[1].getRemaining(); 
remaining3 = factories[2].getRemaining(); 
remaining4 = factories[3].getRemaining(); 
+0

Yup, das ist es. Dank bro. – Yoshi

Verwandte Themen