Announcement

Collapse
No announcement yet.

Frage zu Array

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zu Array

    Hallo Forum,

    ich habe ein Problem bei dem ich nicht weiterkomme (Anfänger)

    Die Preise von verschiedenen Artikeln in den verschiedenen Quartalen möchte ich in einem Array, datatable oder ähnlichem speichern.

    Ein Array hat also 5 Spalten:
    1) Name des Artikels
    2-5) Preise in den unterschiedlichen Quartalen

    Ich erhalte diese Daten unsortiert während der Berechnung eines Reports, d.h. ich muss die Daten einzeln in das Array einfügen.

    Z.B.

    - Artikel A, Preis Quartal 3
    - Artikel B, Preis Quartal 1
    - ARtikel A, Preis Quartal 1

    Dabei muss ich prüfen ob ein Artikel bereits im Array existiert und dann in der entsprechenden Spalte den Preis eintragen.

    Wie kann ich diese Aufgabe lösen?

  • #2
    Hallo sql,

    definiere eine Klasse, in die Du die Daten der einzelnen Artikel packst.

    Für jeden Artikel erzeugst Du ein Object dieser Klasse und schreibst das in ein Dictionary. Als Schlüssel nimmst Du den Artikelnamen.

    Sieht dann so aus:

    Code:
    class Artikel
    {
    string Name;
    double Price1;
    ..
    }
    
    // Dictionary anlegen
    Dictionary<string,Artikel> MeineArtikel = new Dictonary<string,Artikel>();
    
    //Artikel eintragen
    MeineArtikel.Add(MeinArtikel.name, MeinArtikel);
    Vor dem Eintragen eines Artikels kannst Du mit Dictionary.ContainsKey(Artikel.Name) prüfen, ob ein Artikel schon eingetragen ist.

    Die VisualStudio-Hilfe ist zur Dictionary-Klasse recht ausfürhrlich.

    Gruß
    Peter

    Comment


    • #3
      Wie kann ich dann zu einem Artikel nachträglich Preise hinzufügen, die Preise zu den ARtikel kommen durcheinandergewürfelt aus der Anwendung?

      Comment


      • #4
        Etwa so:
        Code:
        Artikel current;
        if (MeineArtikel.TryGetValue("Artikel A", out current)) {
            current.Price3 = 7.5;
        }
        Jürgen

        Comment

        Working...
        X