【发布时间】:2020-04-08 18:12:57
【问题描述】:
我正在尝试从第一行有以下记录的 csv 文件中读取多个记录类型
身份证, 姓名, 值的数量
第二行有
日期, 转移, 值[0..n], 质量
在原始 csvhelper example 的帮助下,我可以阅读原始行,但我无法弄清楚如何向 BarMap 传递需要聚合的值的数量
fooRecords.Add(csv.GetRecord<Foo>());
Foo.numValue
barRecords.Add(csv.GetRecord<Bar>());
public sealed class BarMap : ClassMap<Bar>
{
public BarMap()
{
Map(m => m.date).Index(1);
Map(m => m.shift).Index(2);
//Aggregation of values 1 ..n goes here
Map(m => m.quality).Index(n+1);
}
}
如果有人可以帮助我,我将不胜感激。
【问题讨论】:
-
如果没有固定数量的值,例如每行总是有相同数量的值,那么我想这个助手会遇到困难,因为它正在映射固定类并且不希望处理数组/列表。我认为您要么需要直接询问作者,要么自己动手。
-
我在想的是,如果我可以将 numValues 传递给 Bar 映射器类,我应该能够迭代这些值以获取聚合。这看起来有可能吗?
-
如果总是有相同数量的值,这听起来是可行的。如果每行有不同数量的值,那就更难了。
-
你能给我一个相同数量值的例子吗?然后我会尝试这个想法,看看我如何使它适用于动态值。
-
不使用 CSVHelper 并仅使用 streamreader 解析文件可能很容易。