Situation: Ich habe 3 Klassen, die miteinander arbeiten. 1: Main (GUI) 2: Vergleichen (die Werte vergleichen) 3: CompareData (die Liste Werte erbt)Der beste Weg, um das niedrigste Element in einer Liste zu bekommen
ich zwei Werte annehmen wollen: einen String und eine doppelte, und sie in ein setzen Liste. Natürlich wird es am Ende mehr als nur einen Listenpunkt geben. Nachdem die Liste gefüllt ist, möchte ich das niedrigste Double mit der Saite bekommen und sie in ein Label setzen. Hier
ist das, was ich bisher habe:
Main:
public class GlobaleDaten //The second List: VglDaten is the one for my situation
{
public static List<Daten> AlleDaten = new List<Daten>();
public static List<Vgl> VglDaten = new List<Vgl>();
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
[...Some Code thats not relevant...]
//addListAb adds values in a ListBox and should also
//place them into the list VglDaten
public void addListAb()
{
listBox.Items.Add(Abzahlungsdarlehenrechner.zgName + " " + "[Abzahlungsdarlehen]" + " " +Abzahlungsdarlehenrechner.zmErg.ToString("0.00") + "€" + " " + Abzahlungsdarlehenrechner.zgErg.ToString("0.00") + "€");
Vgl comp = new Vgl();
comp.name = Abzahlungsdarlehenrechner.zgName;
comp.gErg = Abzahlungsdarlehenrechner.zgErg;
GlobaleDaten.VglDaten.Add(comp);
}
//bVergleich should compare these values from the list
//and show the lowest value in a label
public void bVergleich_Click(object sender, RoutedEventArgs e)
{
if (listBox.Items.Count <= 0)
{
MessageBox.Show("Bitte erst Einträge hinzufügen.");
}
else
{
VglRechner vglr = new VglRechner();
vglr.Compare();
lVergleich.Content = VglRechner.aErg + " " + "€";
}
}
CompareData:
//Only used for storing the values
public class Vgl : Window
{
public string name { get; set; }
public double gErg { get; set; }
}
vergleichen:
public class VglRechner
{
public static string aName;
public static double aErg;
public void Compare(Vgl comp)
{
//I'm not sure if this is the right way to compare the values
//correct me if I'm wrong please :)
double low = GlobaleDaten.VglDaten.Min(c => comp.gErg);
aErg = low;
aName = comp.name;
}
}
Der Vergleich funktioniert perfekt, danke :) Aber ich habe eine andere Frage habe: Wenn ich das Etikett auf den Wert von aErg festlegen möge, und es ist immer noch AName 0. Obwohl VglRechner.aErg richtig ist, nicht wahr? –
Zu meinem Kommentar: Hatte nichts mit Ihrem oder meinem Code zu tun. Es gab eine falsche Eigenschaft für das Label, sorry für Verwirrung du :) –