2013-10-01 2 views
0

Я пытаюсь получить строки данных из текстового файла, который содержит элементы, которые я добавил в ListBox, но она просто держит возвращения всех строк данных из моего тестового файла:Повторных строки строки, содержащей только элементы ListBox

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"; 
     } 
    } 
} 

ответ

0

Я вижу несколько проблем в вашем коде.

  1. searchValList.Text должен быть item.ToString();
  2. Inner во время цикла раскручивает до EOF для Fisrt итерации, во второй итерации он всегда возвращает нуль, так как EOF уже достиг.
  3. Во всех еще части внутри вы настройки контура «Значение не было найдено в этом файле» , который совершенно неправильно

Это должно быть что-то вроде этого.

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"; 
} 
+0

Спасибо, я испытаю это, как только у меня появится шанс. – Mikem

+0

О, ты не тестировал? Тогда почему вы его принимаете. –

+0

Мои извинения. Я новичок на этом сайте. – Mikem

2

Вы ищете то же значение во всех строках (и практически ваш внешний контур не имеет смысла)

Изменить следующие

if (line.Contains(searchValList.Text)) 

в

if (item.Text != null && line.Contains(item.Text.ToString())) 
+0

'item.Text' не будет работать. Это должно быть item.ToString() –

+0

@Sriram Да, вы правы. – Tilak

+0

Не только это, посмотрите на мой ответ, чтобы увидеть количество ошибок в этом вопросе –

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"; 
     } 
    } 
} 
+0

Теперь он работает с некоторыми из значений, которые я пытаюсь, но не для всех. Любая идея о том, что может быть причиной этого? – Mikem

+0

может быть файл, в котором отсутствуют данные, или у вас нет всего элемента в списке. – user123456

+0

Для целей тестирования я просто копирую/вставляя из тестового файла, чтобы добавить элемент в список. Все еще играешь, чтобы попытаться понять это. – Mikem

Смежные вопросы