我正在使用FileHelpers加载CSV数据,(贷方-搜索找到的this答案/搜索结果时)。
用户浏览目录,选择带有标题的文件,然后上传进行解析。我的问题是-它们是 one 个时间文件,其 cols / classes / types以前是未知的。
问题:解析时如何我检测到列的数据类型?
搜索后,我发现了一个名为public Type
RecordType
{ get; }
的函数,它提供了记录类型。我需要帮助来获取记录中的Col数据类型。
var fNengine = new FileHelperEngine<AttendeeEventManifesto>();
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提到的运行时帮助程序或他所指的帮助不再存在,我也查看了源代码树。有人可以指向我指向该链接吗
答案 0 :(得分:0)
您可以使用class builder在运行时构建类,如下所示:
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... e.g., add a date field
cb.AddField("SomeDate", typeof(DateTime));
engine = new FileHelperEngine(cb.CreateRecordClass());
DataTable dt = engine.ReadFileAsDT("test.txt");