按日期和名称搜索文本文件中的句子

时间:2014-06-01 11:50:33

标签: c# .net

我正在尝试按日期和名称搜索我的文本文件中的句子。然后我想把这句话加载到我表单中的一些文本框中。我是VS的新手,但我知道一些关于C.的事情。 我想出了这段代码:

string pattern =  dateTimePicker1Is.Text;
string pattern1 = _txtNameIs.Text;
IList<string> result = new List<string>();
using (var reader = new StreamReader(@"C:\Users\user\Desktop\Testet System\isto.txt"))
{
    string currentLine;
    while ((currentLine = reader.ReadLine()) != null)
    {
         if (currentLine.Contains(pattern))
         {
              if (currentLine.Contains(pattern1))
              {
                   result.Add(currentLine);

                   string[] tempArray = currentLine.Split(',');

                   _txtNameIs.Text = tempArray[0];
                   _txtSurnameIs.Text = tempArray[1];
                   _txtApokxT.Text = tempArray[2];
                   _txtApoktT.Text = tempArray[3];
                   _txtEpanxT.Text = tempArray[4];
                   _txtEpandT.Text = tempArray[5];
                   _txtApokkT.Text = tempArray[6];
                   _txtEpankT.Text = tempArray[7];
                   _txtApoksT.Text = tempArray[8];
                   _txtEpansT.Text = tempArray[9];
                   _txtGenSun.Text = tempArray[10];
                   break;
             }
             else
             {
                   MessageBox.Show("There are no records!");
             }
        }
    }
}

当我按下搜索按钮时,它会加载我需要的所有数据,但是如果我有相同的名称和不同的日期,则弹出一个消息框并告诉“没有记录”。

2 个答案:

答案 0 :(得分:0)

我认为您的There are no records错误应该发生

  1. 在while语句之后
  2. 如果未找到匹配项
  3. 右?

    如果在bool中找到匹配,那么就把它放在while if if!IsMatchFound然后抛出你的错误。

答案 1 :(得分:0)

我相信有更好的方法可以做到这一点:

string pattern =  dateTimePicker1Is.Text;
string pattern1 = _txtNameIs.Text;
string pathToFile = @"C:\Users\user\Desktop\Testet System\isto.txt";
List<string> result = new List<string>();

foreach (var line in File.ReadAllLines(pathToFile))
{
   if (line.Contains(pattern) && line.Contains(pattern1))
   {
       result.Add(line);

       string[] tempArray = line.Split(',');

       if(tempArray.Length >= 11)
       {
           _txtNameIs.Text = tempArray[0];
           _txtSurnameIs.Text = tempArray[1];
           _txtApokxT.Text = tempArray[2];
           _txtApoktT.Text = tempArray[3];
           _txtEpanxT.Text = tempArray[4];
           _txtEpandT.Text = tempArray[5];
           _txtApokkT.Text = tempArray[6];
           _txtEpankT.Text = tempArray[7];
           _txtApoksT.Text = tempArray[8];
           _txtEpansT.Text = tempArray[9];
           _txtGenSun.Text = tempArray[10];
           break; 
       }  
   }        
}

如果列表计数为0,最好显示消息。