0

文本文件包含订单和订单详细信息行。订单标题的第一行。之后有可变数量的详细信息行。在详细信息之后有一个空白行,然后是下一个订单等。对于订单行,第一个字段是订单号。对于详细信息行,第一个字段始终为 1。

128502 02.01.2012 20120 02.01.2012
1   Wine    0   1300
1   Meat    5,8333  5,83

128503 02.01.2012 20123 02.01.2012  
1   Wine    20  130
1   Meat    1,33    283,23
1   Cow 2,333   333,23

....

该文件需要读入实体列表:

class Order {
  public string Number; // order number from first field, primary key 
  public string Date;
  ... other fields  
}


class OrderDetails {
  public string Number; // order number from previous line , foreign key to Order
  public string ProductName;
  ... other fields  
}

(取而代之的是 Number 自定义整数 id 列也可以用于关系)

如何使用 FileHelpers 库或其他方式在 C# ASP.NET MVC2 中读取此类文件?

更新

样本

http://www.filehelpers.com/example_multirecords.html

引用自

带有 FileHelpers 的多个 CSV 结构

显示如何读取两个表。如何在这些表之间创建关系:在读取外键到订单列时,应将其添加到详细信息表中。如何实现这一点,从上一个订单行获取最后一个订单号并将其添加到详细记录?

4

1 回答 1

0

好吧,您可以一口气使用蛮力。读入整个文件Split 上的空白就好。从每个拆分的第一行创建一个订单 从其余部分创建详细信息。

如果文件很大,那么您最多可以读取每个空白行,然后按上述方法进行处理。

另一种可能有一些优势的解决方案。

通过编辑详细信息行并从其实际订单行添加订单号的过程运行文件。然后另一个将订单和细节拆分为两个单独的文件。然后处理订单和细节,而不必担心所有这些同上和两个结构。

第四个解决方案,是给提出这种格式的人一个很好的打击,以鼓励他们正确地做到这一点......

对此没有魔术棒的解决方案,文件格式完全不适合将数据有效地传递给可能明智地存储它的东西。

于 2012-06-30T13:52:29.830 回答