2017-08-03 48 views
1

我使用Csv助手通過joshclose寫入csv文件。我已經使用類映射。根據文檔,我不需要在類映射中顯式地忽略未使用的屬性,因爲csv幫助程序只會使用映射中提到的屬性,但這不會發生。這是代碼。Csv助手正在寫所有記錄即使在課堂映射後

public sealed class ExportInvoicesCsvMap : CsvClassMap<Invoice> 
    { 
     public ExportInvoicesCsvMap() 
     { 
      Map(i => i.Number).Index(0).Name("Number"); 
      Map(i => i.SupplierName).Index(1).Name("Supplier Name"); 

     } 
    } 

這是我註冊類映射的地方。

List<Invoice> result = _invoiceService.GetInvoices().ToList();// Getting 300 records 

var config = new CsvConfiguration(); 
config.RegisterClassMap<ExportInvoicesCsvMap>(); 

_csvWriter = new CsvWriter(new CsvFileWriter(_fullPath), config); 
_csvWriter.WriteRecords(result); 
_csvWriter.Dispose(); 

但我仍然在csv中獲取整個發票模型數據。

+0

你確定'Invoice'在'CsvClassMap '是相同類型'Invoice'在'名單'?因爲如果我在CsvClassMap中提供非相關類型,我只能複製所看到的內容。 – rene

+0

是它的同一個型號。 – Epistemologist

回答

0

CsvHelper可以在不忽略屬性的情況下進行修正。可能是你錯過了一些東西。請檢查下面的代碼。

public class Invoice 
{ 
    public int Number { get; set; } 
    public string SupplierName { get; set; } 
    public int Amount { get; set; } 
} 

public sealed class ExportInvoicesCsvMap : CsvClassMap<Invoice> 
{ 
    public ExportInvoicesCsvMap() 
    { 
     Map(i => i.Number).Index(0).Name("Number"); 
     Map(i => i.SupplierName).Index(1).Name("Supplier Name"); 

    } 
} 

     var config = new CsvConfiguration(); 
     config.RegisterClassMap<ExportInvoicesCsvMap>(); 
     List<Invoice> list = new List<Invoice>(); 
     list.Add(new Invoice 
     { 
      Number = 1, 
      SupplierName = "SN", 
      Amount=7 
     }); 

     using (var sw = new StreamWriter(@"test.csv")) 
     { 
      var _csvWriter = new CsvWriter(sw, config); 
      IEnumerable records = list; 
      _csvWriter.WriteRecords(records); 
     } 
+0

我已更新我的代碼。它完全一樣,但沒有運氣。我已安裝最新版本(2.16.3) – Epistemologist

+0

你能分享你的確切代碼,以便我可以查看它。 –

+0

這將需要大量的類編輯,但代碼是相同的其餘代碼是不相關的。 – Epistemologist