gpt4 book ai didi

c# - 使用 CsvHelper 将 CSV 中的所有值读入列表

转载 作者:IT王子 更新时间:2023-10-29 04:46:33 25 4
gpt4 key购买 nike

所以我一直在读到我不应该编写自己的 CSV 读取器/写入器,所以我一直在尝试使用通过 nuget 安装的 CsvHelper 库。 CSV 文件是灰度图像,行数为图像高度,列数为宽度。我想将值逐行读入单个 List<string>List<byte> .

我目前的代码是:

using CsvHelper;

public static List<string> ReadInCSV(string absolutePath)
{
IEnumerable<string> allValues;

using (TextReader fileReader = File.OpenText(absolutePath))
{
var csv = new CsvReader(fileReader);
csv.Configuration.HasHeaderRecord = false;
allValues = csv.GetRecords<string>
}

return allValues.ToList<string>();
}

但是allValues.ToList<string>()正在抛出一个:

用户代码未处理 CsvConfigurationException

CsvHelper.dll 中出现类型为“CsvHelper.Configuration.CsvConfigurationException”的异常,但未在用户代码中处理

附加信息:无法自动映射继承 IEnumerable 的类型。您是否不小心调用了作用于单个记录的 GetRecord 或 WriteRecord,而不是调用了作用于记录列表的 GetRecords 或 WriteRecords?

GetRecords可能需要我自己的自定义类,但我只是想要一些原始类型或字符串的值。此外,我怀疑整行都被转换为单个字符串,而不是每个值都是一个单独的字符串。

最佳答案

根据@Marc L 的帖子,您可以尝试这样做:

public static List<string> ReadInCSV(string absolutePath) {
List<string> result = new List<string>();
string value;
using (TextReader fileReader = File.OpenText(absolutePath)) {
var csv = new CsvReader(fileReader);
csv.Configuration.HasHeaderRecord = false;
while (csv.Read()) {
for(int i=0; csv.TryGetField<string>(i, out value); i++) {
result.Add(value);
}
}
}
return result;
}

关于c# - 使用 CsvHelper 将 CSV 中的所有值读入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33294738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com