2017-02-11 2 views
0

Ich mache einen WCF-Dienst mit GUI als Client, aber ich habe ein Problem mit dem Drucken Liste der aktuellen Elemente hinzugefügt. Ich habe einen Code, um neue Einträge zur Liste hinzufügen:C# Druckliste Problem

public bool Add_Data(Data sample) 
    { 
     container.Add(sample); 
     Console.WriteLine("New record added!"); 
     return true; 
    } 

Und es funktioniert, aber wenn ich versuche hinzugefügten Datensätze mit ersten zu sehen versuchen, es funktioniert, aber wenn ich es sehen will wieder Liste hinzufügt gleiches Element. Um Ihnen zu zeigen, wie es funktioniert:

  1. Ich bin das Hinzufügen neuer Eintrag und ich „print“ -Liste: IMAGE CLICK [funktioniert, wie es sollte]
  2. Allerdings möchte ich es noch einmal sehen, so dass ich drücken selbe Taste in meiner Form, und hier ist, was passiert: IMAGE CLICK wie Sie sehen können, haben wir unsere Liste + zusätzliche gleiche Aufzeichnung, wenn ich Knopf erneut drücken werde, werde ich 3 gleiche Datensätze haben.

Hier ist meine "Show records" Code:

public string Show_Data() 
    { 
     Console.WriteLine("Printing records"); 
     foreach (Data record in container) 
     { 
      string final_result = ("\nID: "+ + record.ID + " " + "product: " + record.product + " " + "category: " + record.category + " " + "price: " + record.price + " " + "quantity: " + record.quantity + " " + "\n "); 
      result += final_result; 
     } 
     return result;     
    } 

Lassen Sie mich wissen, wenn Sie wissen, wie es zu lösen.

+0

Der entsprechende Code ist, wie Sie Show_Data() aufrufen, nicht gebucht. –

Antwort

0

Sie müssen in den variablen Bereich schauen. Sie haben das Ergebnis außerhalb der Show_Data() Methode deklariert. Bei jedem Aufruf der Methode machst du result += final_result;, was zum Ergebnis führt. Probieren Sie den folgenden Code aus und Sie erhalten unterschiedliche Ergebnisse.

Auch würde ich darüber nachdenken, einen String-Builder und String-Format auch verwenden.

public string Show_Data() 
{ 
    Console.WriteLine("Printing records"); 
    var output = new StringBuilder(); 
    foreach (Data record in container) 
    { 
     string final_result = string.Format("ID: {0} product: {1} category: {2} price: {3} quantity: {4}", record.ID, record.product, record.category, record.price, record.quantity); 

     // if using C# 6 
     // string final_result = string.Format($"ID: {record.ID} product: {record.product} category: {record.category} price: {record.price} quantity: {record.quantity)}"; 
     output.AppendLine(final_result); 
    } 
    return output.ToString();     
} 
+0

Danke! :) Es funktioniert, ich verstehe es jetzt :) – jeceko

+0

Keine Sorgen, froh, ich könnte helfen. –