#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 }