其他声明总是被执行

时间:2016-10-04 09:58:09

标签: c# csv streamreader

由于某种原因,即使if语句是。

,我的Else语句也始终被执行
string line;
string[] columns = null;
while ((line = sr.ReadLine()) != null)
{
    columns = line.Split(',');
    if (columns.Contains(tboxName.Text))
    {
        rtBoxResults.Text = ((columns[0] + " " + columns[1] + " " + columns[2] + " " + columns[3]));
    }
    else
    {
        MessageBox.Show("No Hotels Found.");
        break;
    }

这是因为它正在搜索文件中的每一行,因为while循环而不是每一行都包含tboxName吗?

如果是这样,如何在不使用while循环的情况下返回列[0]的所有值?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,如果文件中的行 none 包含tboxName.Text,您是否要显示消息框?如果是这样,您可以在while循环完成后执行此检查,使​​用bool来跟踪是否有任何行匹配:

        string line;
        string[] columns = null;
        bool foundHotels = false;
        while ((line = sr.ReadLine()) != null)
        {
            columns = line.Split(',');
            if (columns.Contains(tboxName.Text))
            {
                rtBoxResults.Text = ((columns[0] + " " + columns[1] + " " + columns[2] + " " + columns[3]));
               foundHotels = true;
            }
         }

         if(!foundHotels)
         {
             MessageBox.Show("No Hotels Found.");               
         }

答案 1 :(得分:1)

尝试这样的事情

string[] columns = null;
        var isHotels = false;
        while ((line = sr.ReadLine()) != null)
        {
            columns = line.Split(',');
            if (columns.Contains(tboxName.Text))
            {
                rtBoxResults.Text = ((columns[0] + " " + columns[1] + " " + columns[2] + " " + columns[3]));
                isHotels = true;
            }
        } // while loop ends
        if (!isHotels)
        {
            MessageBox.Show("No Hotels Found.");
            break;
        }