Как перейти к следующей строке с помощью StreamReader после создания значения, которое я искал?

#c# #azure #streamreader

Вопрос:

Я работаю в проекте, в котором я считываю значения из файла .txt, чтобы проверить, имеют ли данные, которые я извлекаю из базы данных, по крайней мере одно значение, равное файлу .txt.

Пример:

содержимое файла .txt

22,
23,
24,
25

’23’ из файла .txt должно содержать 4 результата из базы данных, что я хочу сделать, так это после поиска, если есть 1 результат, перейти к следующей строке в этом случае 23.

Я пытаюсь создать модель с bool для сравнения, если она была добавлена, но все еще не работает, добавлена в хэш-набор и без результата.

Вот что у меня есть до сих пор:

 private void Fetch()
    {

        List <CList> itemList = new List<CList>();

        using (StreamReader sr = new StreamReader("numberOfItems.txt"))
        {
            string line;

            while ((line = sr.ReadLine()) != null)
            {
                string[] itemsC = line.Split(",");                    

             //Logic here: check if itemC has one result from container, skip to the next line in numberOfItems.txt

                
            }
        }
    }
 

Комментарии:

1. Действительно ли в вашем .txt файле больше одной строки? Похоже, у вас действительно есть только одна строка значений, разделенных запятыми. Вам нужно будет выполнить итерацию вашего itemsC массива. Если я правильно это читаю. Ваш точный вопрос на самом деле не совсем ясен.

2. @ScottWelker мой .txt содержит 10 строк, я хочу проверить, соответствует ли значение, получаемое из .txt, данным из базы данных, добавленным в список, и перейти к следующей строке, не добавляя более одного элемента.

3. Если в вашем файле всего 10 строк, честно говоря, пропустите StreamReader и просто используйте File.ReadAllLines , чтобы все это было в а string[] . Тогда пропустить строку так же просто, как прочитать следующий элемент в массиве.

4. Утверждение » Продолжить «, по-видимому, является ответом на ваш вопрос, но я действительно не думаю, что это то, что вы хотели спросить.

5. При использовании ReadLine на a StreamReader считыватель начинается с текущей позиции и читает до тех пор , пока не увидит конец строки, а затем возвращает строку текста в виде строки. Строки могут быть длинными или пустыми, поэтому нет никакого волшебства «перейти к следующей строке». Что вы хотите сделать, так это то, что если вы решите пропустить следующую строку, вы установите флажок с надписью ignoreNextLine . Когда флаг установлен, вы читаете следующую строку, но не обрабатываете ее (единственная обработка, которую вы выполняете, — это очистка ignoreNextLine флага).

Ответ №1:

Существует вероятность того, что программа чтения потока считывает все как строку, поэтому вы можете использовать цикл, чтобы игнорировать все, пока не нажмете символ n (новой строки), или просто System.Linq.Enumerable.SkipWhile() пропустить каждый символ, пока не найдете символ новой строки.