0

リストボックスに追加したアイテムを含むテキスト ファイルからデータ行を取得しようとしていますが、テスト ファイルからすべてのデータ行を返し続けます。

foreach (var item in searchValList.Items)
{
    while ((line = file.ReadLine()) != null)
    {
        if (line.Contains(searchValList.Text))
        {
           sb.AppendLine(line.ToString());
           resultsTextBox.Text = sb.ToString();
        }
        else
        {
           resultsTextBox.Text = "The value was not found in this file";
        }
    }
}
4

3 に答える 3

0

リストボックスがあるので、このようにすべきだと思います。これを試して :

foreach (var item in searchValList.Items)
{
    while ((line = file.ReadLine()) != null)
    {
        if (line.Contains(item.ToString()))
        {
           sb.AppendLine(line.ToString());
           resultsTextBox.Text = sb.ToString();
        }
        else
        {
           resultsTextBox.Text = "The value was not found in this file";
        }
    }
}
于 2013-10-01T19:38:33.380 に答える
0

あなたのコードにはいくつかの問題があります。

  1. searchValList.Textである必要がありますitem.ToString();
  2. 内側のwhileループは最初の反復までスピンEOFし、2番目の反復ではEOFすでに到達しているため、常にnullを返します。
  3. ループ内のすべてのelse部分で、「このファイルに値が見つかりませんでした」と設定していますが、これは完全に間違っています

このようなものでなければなりません。

string[] lines = File.ReadAllLines("...");
var listboxItems = searchValList.Cast<object>().Select(x=> x.ToString()).ToList();

foreach (var line in lines)
{
    if (listboxItems.Any(x=> line.Contains(x)))
    {
        sb.AppendLine(line);
    }     
}

if(sb.Length > 0)
{
    resultsTextBox.Text = sb.ToString();
}
else
{
     resultsTextBox.Text = "The value was not found in this file";
}
于 2013-10-01T19:52:43.500 に答える