【问题标题】:Reading from a csv file, and removing any rows that only have ""从 csv 文件中读取,并删除任何只有“”的行
【发布时间】:2021-12-18 12:43:14
【问题描述】:

使用流阅读器从 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
                    ...
                }
            }

如果它看起来不像第三个数组,我只想将数据转换为一个对象。 {"", "", "", ""}

【问题讨论】:

  • 所以,如果您的行正好有四列,它应该看起来像 ,,, 是什么阻止您在开始处理该行之前检查它?
  • 不相关:在处理 CSV 时,我建议使用 CSV 库。
  • “如果能够在读取该行后检查它是否为 ,,”,那将是很好的选择 - 是什么让您无法做到这一点?

标签: c# arrays csv streamreader


【解决方案1】:

你可以使用 Linq

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

// All values are empty
bool allEmpty = data.All(string.IsNullOrWhiteSpace);

【讨论】:

  • @Steve 更正为使用数组
【解决方案2】:

只需添加一个简单的 if 语句:

if (data.Any() && !data.All(a => a == string.Empty))
{
   // Convert data into an object
}

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    相关资源
    最近更新 更多