Мне нужно прочитать файл csv, который иногда имеет значения int в полях DateTime из-за ошибки ввода. Но мне все еще нужно сохранить эти значения, чтобы позже записать их в выходной файл.
Пример данных:
"517506","m","2012-11-07","LTU","4","m","0"
"517507","m","9","BLR","2","d","0"
Сначала я думал, что проблема в самом чтении, но потом заметил, что получаю эту ошибку
Unhandled Exception: FileHelpers.ConvertException: Error Converting '9' to type: 'DateTime'. There are less chars in the Input String than in the Format string: 'yyyy-MM-dd'
когда я пытаюсь преобразовать эти значения int обратно в значение DateTime при записи вывода в файл .txt.
Буду признателен за любую помощь.
Мой код:
static void Main(string[] args)
{
var engine = new FileHelperEngine<Citizen>();
var result = engine2.ReadFile(@"C:\registered_people.csv");
engine.WriteFile(@"C:\FileOut2.txt", result);
}
Класс гражданина:
public class Citizen
{
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
public int? id;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
[FieldNullValue("")]
public string gender;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
[FieldNullValue(typeof(DateTime), "")]
[FieldConverter(ConverterKind.Date, "yyyy-MM-dd")]
public DateTime birthDate;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
[FieldNullValue("")]
public string nationality;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
public int? countyNo;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
[FieldNullValue("")]
public string familyStat;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
public int? children;
}