C#WinForm-将DataReader与列表框内容进行比较并显示匹配项

C#WinForm-将DataReader与列表框内容进行比较并显示匹配项,c#,winforms,sqldatareader,C#,Winforms,Sqldatareader,我试图处理一个项目,其中我从SQL数据库中提取一列数据,并将数据与列表框中的值进行比较。到目前为止,它正在查找比较,但只返回一个值,即使列表框中有多个匹配项 我做错了什么?谢谢任何人能提供的帮助 private void btnDoAudit_Click(object sender, EventArgs e) { string respName = "something"; SqlDataReader reader = null;

我试图处理一个项目,其中我从SQL数据库中提取一列数据,并将数据与列表框中的值进行比较。到目前为止,它正在查找比较,但只返回一个值,即使列表框中有多个匹配项

我做错了什么?谢谢任何人能提供的帮助

    private void btnDoAudit_Click(object sender, EventArgs e)
    {
        string respName = "something";
        SqlDataReader reader = null;

        using (SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=XXXX;Integrated Security=True;;User Instance=True"))
        {
            using (SqlCommand command = new SqlCommand("SELECT [Responsibility_Name] FROM [tblResponsibility] WHERE [Sensitive_Transaction]='TRUE'", conn))
            {
                conn.Open();

                reader = command.ExecuteReader();

                while (reader.Read())
                {
                    respName = (string)reader["Responsibility_Name"];



                        if (lstResponsibilities.Items.Contains(respName) == true)
                        {
                          txtResults.Text = respName;
                        }

                }
                reader.Close();
                conn.Close();
            }
        }
    }

每次找到匹配项时,都会覆盖TXTRUSTS.Text。您可以改为附加:

txtResults.Text += respName;
或者,您更愿意将匹配列表保存在一个列表中,然后将它们合并到更清晰的内容中。您可以将其放在方法顶部附近,声明其他变量:

List<string> matches = new List<string>();
完成SqlConnection后,在方法末尾,可以将它们连接成一个漂亮的字符串:

txtResults.Text = string.Join(", ", matches);

在while语句中,每次找到匹配项时,都会覆盖以前的匹配项:

txtResults.Text = respName;
也许您想创建一个逗号分隔的列表:

txtResults.Text += respName + ", ";

然后修剪最后一个逗号

太好了,可以了!我知道我忽略了这么简单的事情。如果我抛出一个else If(lstResponsibility.Items.Contains(respName)==false){txtResults.Text=“没有冲突。”;}。。。然后将匹配值添加到列表框并重新运行该方法,“没有冲突”消息将保留,并且不会被新的匹配值覆盖。@InnerMB如果使用+=追加文本,请确保先清除文本。在方法顶部,您需要添加
txtreults.Text=“”
txtreults.Text=string.Empty()
txtResults.Clear()谢谢你的指针,但出于某种原因,“没有冲突”字符串似乎压倒了匹配的if语句。
txtResults.Text += respName + ", ";