簡體   English   中英

如何使用FileHelpers或C#中的其他庫從單個文本文件讀取兩個實體

[英]How to read two entities from single text file using filehelpers or other library in C#

文本文件包含訂單和訂單明細行。 訂單標題中的第一行。 之后,明細行數是可變的。 詳細信息之后是空白行,然后是下一個訂單等。對於訂單行,第一個字段是訂單號。 對於明細行,第一字段始終為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結構

顯示了如何讀取兩個表。 如何在這些表之間創建關系:在讀取外鍵到訂單列時,應將其添加到明細表中。 如何實現這一點,從上一個訂單行獲取最后一個訂單號,並將其添加到明細記錄中?

好吧,你可以一口氣去蠻力。 讀入整個文件,像空白一樣拆分。 在每個拆分的第一行之外創建訂單在其余部分之外創建明細。

如果文件很大,則可以讀入每個空白行,然后按上述步驟進行處理。

另一個可能具有某些優點的解決方案。

通過編輯明細行並從其實際訂單行添加訂單號的過程來運行文件。 然后是另一個將順序和詳細信息分成兩個單獨文件的文件。 然后處理訂單,然后處理細節,而不必擔心所有這些同等和兩個結構。

第四個解決方案是,給想出這種格式的人一個很好的毆打,以鼓勵他們正確地使用它。

沒有萬能的解決方案,文件格式完全不適合將數據有效地傳遞到可能明智地存儲的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM