2016-07-06 2 views
0

상황 : 서로 작동하는 3 개의 수업이 있습니다. 1 : 홈페이지 (GUI를) 2 : CompareData 내가 두 값을 먹고 싶어목록에서 가장 낮은 항목을 얻는 가장 좋은 방법

(목록 값 상속) : 3 (값을 비교) 비교 문자열과 두 번, 그리고에 넣어 명부. 물론 마지막에 하나 이상의 목록 항목 만있을 것입니다. 리스트가 채워지면, 가장 작은 더블을 문자열로 가져 와서 레이블에 넣고 싶습니다.

홈페이지 :

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

비교 :

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

답변

1

Enumerable.Min 사용이 적합한 여기

는 내가 지금까지있어 무엇인가 방법 가장 낮은 값을 얻으려면이 값으로 속한 string을 얻지 않으므로 Vgl 인스턴스가됩니다.

당신은이 방법을 사용할 수

:

Vgl lowestItem = GlobaleDaten.VglDaten.OrderBy(c => c.gErg).First(); 
aErg = lowestItem.gErg; 
aName = lowestItem.name; 
+0

완벽하게 비교 작품, 감사합니다 :)하지만 또 다른 질문이 있어요을 : 나는 aErg의 값으로 레이블을 설정하고자하고 aName 경우는 아직 VglRechner.aErg가 맞습니다. 그렇지 않습니까? –

+0

내 의견에 : 귀하 또는 귀하의 코드와 관련이 없습니다. 라벨에 대한 속성이 잘못되었습니다. 혼란스러워서 죄송합니다. :) –

관련 문제