Чтение из csv-файла и удаление всех строк, в которых есть только «»

#c# #arrays #csv #streamreader

Вопрос:

Чтение из csv-файла с помощью программы чтения потоков, а затем разделение каждого значения из строки, которая считывается запятой.

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

 {"test", "test", "test", "test"} {"test1", "test1", "test1", "test1"} {"", "", "", ""}  

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

 using (StreamReader reader = new StreamReader(stream))  {  reader.ReadLine();   while (reader.Peek() != -1)  {   var line = reader.ReadLine();   string[] data = line.Split(',');   // Convert data into an object  ...  }  }  

Я хотел бы преобразовать данные в объект только в том случае, если он не похож на 3-й массив. {«», «», «», «»}

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

1. Итак, если в вашей строке ровно четыре столбца, она должна выглядеть так ,,, Что мешает вам проверить это перед началом обработки строки?

2. Не связано: Как всегда при работе с CSV, я бы рекомендовал использовать библиотеку CSV.

3. «Было бы неплохо иметь возможность проверить сразу после прочтения строки, чтобы убедиться, что это,,,» — что мешает вам сделать именно это?

Ответ №1:

Вы можете использовать Linq

 // At least 1 empty value bool hasEmpty = data.Any(string.IsNullOrWhiteSpace);  // All values are empty bool allEmpty = data.All(string.IsNullOrWhiteSpace);  

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

1. @Стив исправил, чтобы вместо этого использовать массив

Ответ №2:

Просто добавьте простое утверждение if:

 if (data.Any() amp;amp; !data.All(a =gt; a == string.Empty)) {  // Convert data into an object }