C#打印列表问题

问题描述:

我正在做一个GUI作为客户端的WCF服务,但是我添加了当前项目的打印列表有问题。我有一个代码,以新的条目添加到列表:C#打印列表问题

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

,它的工作,但是当我试图查看添加的记录与第一次尝试它的工作原理,但是如果我想查看一遍列表添加相同的元素。为了向你展示它是如何工作的:

  1. 我添加新条目和我“打印”的文章: IMAGE CLICK [工作应该如何]
  2. 不过,我想再次看到它,所以我迫切同样的按钮在我的形式,这里是发生了什么:IMAGE CLICK正如你所看到的,我们有我们的列表+额外的相同记录,如果我再次按下按钮,我将有3个相同的记录。

这里是我的“节目记录”代码:

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

让我知道,如果你知道如何解决它。

+0

相关的代码是你如何调用Show_Data(),而不是发布。 –

您需要查看变量范围。您在Show_Data()方法之外声明结果。每次调用该方法时,都会执行result += final_result;,这会增加结果。尝试下面的代码,你会得到不同的结果。

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

此外,我会考虑使用字符串生成器和字符串格式。

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

谢谢! :)它的工作原理,我现在明白了:) – jeceko

+0

不用担心,很高兴我能帮上忙。 –