【问题标题】:Check if list is Populated [duplicate]检查列表是否已填充[重复]
【发布时间】:2020-04-04 21:06:06
【问题描述】:

我正在编写一个程序,允许人们输入邮政编码并显示不同的医疗服务,以及他们与输入的邮政编码的距离。

邮政编码本应存储在列表中,但我不知道如何检查列表是否已填充。

任何人都可以给我任何想法。

这是列表

 private List<string> GetPostcodes(string table)
    {
        connect = new MySqlConnection(connectionString);
        connect.Open();
        string selectString = "select postcode from " + table;

        MySqlCommand cmd = new MySqlCommand(selectString,connect);
        reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            postcodes.Add(reader.GetString("postcode"));
        }
        connect.Close();

        return postcodes;
    }

这是一个测试按钮,但它不起作用

 private void Button_Click1(object sender, RoutedEventArgs e)
    {
        var test1 = GetPostcodes("gpSurgery").ToString();
        MessageBox.Show(test1);

    }

【问题讨论】:

  • PostCodes.Count > 0?
  • @Jawad 那会去哪里?
  • 试试 MessageBox.Show(test1.Count);
  • 你能更明确地说明它是如何“不起作用”的吗?
  • @FawcettFawcett 你的意思是什么都没发生?代码被击中了吗?您是否在附加调试器的情况下运行它?是否抛出异常?在描述代码的行为时,您需要非常具体。请记住,我们不在您的计算机旁查看正在发生的事情,因此您可以自行描述正在发生的事情。

标签: c# wpf


【解决方案1】:

GetPostcodes 方法应在每次调用时创建一个新的List&lt;string&gt;,而不是重用全局变量:

private List<string> GetPostcodes(string table)
{
    List<string> postcodes = new List<string>();
    using (var connect = new MySqlConnection(connectionString))
    {
        connect.Open();
        string selectString = "select postcode from " + table;
        using (MySqlCommand cmd = new MySqlCommand(selectString, connect))
        {
            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    postcodes.Add(reader.GetString("postcode"));
                }
            }
        }
    }
    return postcodes;
}

在“测试”中,如果您想确定其中的项目数,您可以简单地检查列表的 Count 属性的值:

private void Button_Click1(object sender, RoutedEventArgs e)
{
    var test1 = GetPostcodes("gpSurgery");
    MessageBox.Show(test1.Count);

}

【讨论】:

    【解决方案2】:

    您需要做的是检查 GetpostCodes 返回的列表。不要将其转换为字符串,因为该函数不适用于列表。您必须正确地将列表转换为其对应的字符串。

    GetPostcodes 返回一个列表。使用该列表检查其计数。

     private void Button_Click1(object sender, RoutedEventArgs e)
        {
            var test1 = GetPostcodes("gpSurgery");
            if (test1.Count > 0) // <---- Check the Count here
            {
                MessageBox.Show(string.Join(",", test1)); // <-- Display the list
            }
            else
            {
                MessageBox.Show("Nothing found"); // <-- Shows nothing found.
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2014-07-16
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多