寻找FileHelpers主细节方向

时间:2014-08-12 14:44:18

标签: c# asp.net-mvc filehelpers

我有一个以这种格式提供的.csv文件。我正在使用FileHelpers库,但我需要一些指导将文件解析为单个记录,以便可以将集合插入到数据库中。此时我相信“总计”行可以忽略,但仍在等待确认。

 94506 - DANVILLE CA,,,,,,,,,
 Route,SFDU ,MFDU ,Total ,Names ,Income ,Home ,Age ,PHWC ,Sat 
 C055, 879, 0, 359, 442, $100, $100, 60, 21%, S
 Total, 0, 0, 0, 0,,,,,
,,,,,,,,,
 94518 - CONCORD CA,,,,,,,,,
 Route,SFDU ,MFDU ,Total ,Names ,Income ,Home ,Age ,PHWC ,Sat 
 C086, 578, 33, 785, 237, $100, $100, 49, 22%, S
 C087, 478, 37, 733, 337, $100, $100, 49, 22%, S 
 C088, 578, 36, 798, 437, $100, $100, 49, 22%, S
 Total, 0, 0, 0, 0,,,,,

1 个答案:

答案 0 :(得分:2)

有一个简单的示例here

基本上,您需要定义两个类,一个用于您的主类:

[DelimitedRecord("-")]
public class Master
{
   public string Zip;
   public string City;
}

另一个是你的细节

[DelimitedRecord(",")]
public class Orders
{
   public string Route;
   public int SFDU;
   public int MFDU;
   public int Total;
   public int Names;
   public string Income;
   // etc ...
}

然后你需要一个选择器来确定哪个

RecordAction ExampleSelector(string record)
{
   if (record[0] == 'C') // if the line starts with a C
      return RecordAction.Detail;
   else if Char.IsNumber(record[0]) // if the line starts with a number
      return RecordAction.Master;
   else // skip anything else, e.g., Route, Total, etc.
      return Record.Action.Skip;
}