【问题标题】:C# print list issueC#打印列表问题
【发布时间】:2017-02-11 15:59:09
【问题描述】:

我正在使用 GUI 作为客户端执行 WCF 服务,但是在打印添加的当前项目列表时遇到问题。我有一个向列表添加新条目的代码:

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

如果你知道如何解决,请告诉我。

【问题讨论】:

  • 相关代码是你怎么调用Show_Data(),没贴出来。

标签: c# list wcf record contract


【解决方案1】:

您需要查看变量范围。您在 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();                  
}

【讨论】:

  • 不用担心,很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多