Jump to content
Unity Insider Forum

zwischensummen bilden


peachplayer

Recommended Posts

Hallo Leute,

Weiss jemand zufällig wie man von einer generischen Liste Zwischensummen bilden kann?

Das List-Objekt sieht so aus:

 
public class KostenEintrag
{
   int Nummer;
   string Parzellenname;
   float Kosten_d;
   float Kosten_pf;
   float Kosten_f;
   float totaleKosten;


    public KostenEintrag(int nr, string v, float kd, float kpf, float kf)
    {
        Nummer = nr;
        Parzellenname = v;
        Kosten_d = kd;
        Kosten_pf = kpf;
        Kosten_f = kf;

    }
    public int GetNummer()
    {
        return Nummer;
    }
    public string GetParzellenname()
    {
        return Parzellenname;
    }
  
    public float GetKosten_d()
    {

        return Kosten_d;
    }
    public float GetKosten_pf()
    {

        return Kosten_pf;
    }
    public float GetKosten_f()
    {

        return Kosten_f;
    }
    public bool GroesserAls(float neu)
    {
        if (Nummer > neu)
            return true;
        else
            return false;
    }
    public float Summebilden()
    {
        totaleKosten = Kosten_d + Kosten_pf + Kosten_f;
        return totaleKosten;
    }
}

Gruss, peachplayer

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Sascha

Ich verwende folgenden Code:

void ListeAnzeigen()
    {
        string NummerAusgabe = "";
        string ParzellennameAusgabe = "";
        string KostenAusgabe = "";
        string totaleKostenAusgabe = "";
        float Kostentotal = 0.0f;
        float Kostensumme = 0.0f;

        for (int i = 0; i < liste.Count && i < 20; i++)
        {
            NummerAusgabe += liste[i].GetNummer() + "\n";
            ParzellennameAusgabe += liste[i].GetParzellenname() + "\n";
           
            KostenAusgabe += liste[i].GetKosten_d() + liste[i].GetKosten_pf() + liste[i].GetKosten_f() +"\n";

            //if (liste[i].GetParzellenname() == liste[i+1].GetParzellenname())
            //    KostenAusgabe += liste[i].Summebilden()+liste[i+1].Summebilden() + "\n";
            // else
            //    KostenAusgabe += liste[i].Summebilden() + "\n";
        }

        NummerAnzeige.text = NummerAusgabe;
        ParzellennameAnzeige.text = ParzellennameAusgabe;
        KostenAnzeige.text = KostenAusgabe;

        totaleKostenAnzeige.text = "Totale Kosten = " + Kostentotal;
        PlayerPrefs.SetFloat("Kosten_total", Kostentotal);
    }

Damit möchte ich die Kosten von allen Listen-Einträge(liste) mit gleichem Parzellennamen aufsummieren. Leider geht das (noch) nicht!

Kann mir jemand helfen?

Gruss, peachplayer

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke für die Antwort. Leider klappt es immer noch nicht ganz!

Das Resultat sieht jetzt so aus! Es stimmt leider nur das Endresultat!

Hier noch der dazugehörige Code:

  void ListeAnzeigen()
    {
        string NummerAusgabe = "";
        string ParzellennameAusgabe = "";
        string KostenAusgabe = "";
        string totaleKostenAusgabe = "";
        float Kostentotal = 0.0f;
        string Kostensumme = "";

        for (int i = 0; i < liste.Count && i < 20; i++)
        {
            NummerAusgabe += liste[i].GetNummer() + "\n";
            ParzellennameAusgabe += liste[i].GetParzellenname() + "\n";

            KostenAusgabe += liste[i].Summebilden() + "\n";
            Kostensumme = liste.Sum(eintrag => eintrag.Summebilden()) + "\n";
            KostenAusgabe += liste.Sum(s => {

                if (s.GetParzellenname() == "Fahlrüti1")
                    return s.Summebilden();
                else if (s.GetParzellenname() == "Suchern1")
                    return s.Summebilden();
                else if(s.GetParzellenname() == "Studenacker1")
                    return s.Summebilden();
                else if(s.GetParzellenname() == "Wille1")
                    return s.Summebilden();
                else if (s.GetParzellenname() == "Zuchern")
                    return s.Summebilden();
                else
                return 0; 
            }) + "\n";
        }
        NummerAnzeige.text = NummerAusgabe;
        ParzellennameAnzeige.text = ParzellennameAusgabe;
        KostenAnzeige.text = KostenAusgabe;

        totaleKostenAnzeige.text = "Totale Kosten = " + Kostensumme;
        PlayerPrefs.SetFloat("Kosten_total", Kostentotal);
    }

image.thumb.png.0d6d26474061e945165cedc563ef003b.png

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du kannst mit Linq auch nach Parzellennamen gruppieren:

var parzellen = liste.GroupBy(item => item.GetParzellenname());
foreach (var parzelle in parzellen)
{
  // Code der pro Parzellenname ausgeführt wird
  // parzelle enthält alle Einträge der jeweiligen Parzelle
  string parzellenName = parzelle.Key;
  float parzellenSumme = parzelle.Sum(item => item.Summebilden());
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...