如何在运行时检测Column数据类型,同时使用标头解析CSV文件

我正在使用FileHelpers加载CSV数据,(信用 – 搜索时找到了这个答案/搜索结果)。

用户浏览目录,选择带有标题的文件,然后上传进行解析。 我的问题是 – 它们是一次性文件,其cols / classes / types以前不知道

问题 :如何在解析时检测列的数据类型?

搜索后我发现了一个名为public Type RecordType的函数{ get; } 它提供了记录类型..我需要帮助来获取记录中的Col数据类型。

 var fNengine = new FileHelperEngine(); var fNrecords = engine.ReadFile("AttendeesByEvents.csv"); // How to get the Col types? // HeaderText = typeof(..*notKNown*).GetCsvHeader(); //..var headers = fNrecords.HeaderText(); //foreach (var header in headers) // Console.WriteLine(header.RecordType() + `\n`); 

我也在SO上找到了这个答案,但@ shmap00提到的运行时助手或者他所指的帮助不再存在,我也查看了源代码树。 有人可以指点我的链接

您可以使用类构建器在运行时构建类,如下所示:

 DelimitedClassBuilder cb = new DelimitedClassBuilder("MyProduct", delimiter: ","); cb.AddField("Name", typeof(string)); cb.LastField.TrimMode = TrimMode.Both; cb.AddField("Description", typeof(string)); cb.LastField.FieldQuoted = true; cb.LastField.QuoteChar = '"'; cb.LastField.QuoteMode = QuoteMode.OptionalForBoth; // etc... eg, add a date field cb.AddField("SomeDate", typeof(DateTime)); engine = new FileHelperEngine(cb.CreateRecordClass()); DataTable dt = engine.ReadFileAsDT("test.txt");