Я пытаюсь перебрать CSV-файл для вывода на консоль. Я использую CsvHelper и следовал инструкциям к T, но всякий раз, когда я пытаюсь перебрать IEnumerable, полученный из метода GetRecords (), возникает исключение ConfigurationException.
Вот код, который я использую
using (var reader_ans = new StreamReader("scriptlists/prac_iden_ans.csv"))
using (var csv_ans = new CsvReader(reader_ans))
{
var ans = csv_ans.GetRecords<string>();
foreach (string item in ans)
{
Debug.Log(item);
}
}
Это странно, потому что это именно то, что есть в документации и на нескольких сайтах.
Появляется ошибка:
ConfigurationException: Types that inherit IEnumerable cannot be auto mapped. Did you accidentally call GetRecord or WriteRecord which acts on a single record instead of calling GetRecords or WriteRecords which acts on a list of records?
Мне было интересно, если это какая-то глупость, которую я пропускаю, потому что я довольно плохо знаком с C #. Я также кодирую это в Unity3D, так что это может быть частью проблемы?
Я также пытался использовать метод .ToList () в самой первой строке, но безрезультатно.
Edit1:
После попытки создания пользовательского класса я столкнулся с другой ошибкой, на этот раз от компилятора, прежде чем я смог даже запустить код.
По сути, в этом фрагменте кода:
foreach (string item in ans)
{
Debug.Log(item);
}
foreach подсвечивается и выдает сообщение об ошибке «Невозможно преобразовать тип« rules.ScriptsList »в« string »». Мой файл называется "Инструкции.cs".
Некоторая дополнительная информация, которая может быть проблемой:
1) Я пишу этот фрагмент кода в IEnumerator, но я не думаю, что это должно быть проблемой, поскольку у меня есть другие строки "foreach". Разве CsvHelper использует определенный код, который не будет работать в IEnumerator?
2) Мои файлы .csv были созданы в Excel и имеют заголовки. На самом деле это просто несколько столбцов «Да» и «Нет». Повлияет ли создание его в Excel и сохранение его в формате .csv (с разделителями-запятыми) на то, как его читает CsvHelper?
3) Имеет ли значение, что класс написан над этой функцией? (Я знаю, что это довольно просто, но я довольно плохо знаком с C # и заметил, что во многих документах класс обычно пишется ниже функции)
Большое вам спасибо за помощь!