簡體   English   中英

使用 CsvHelper 僅將選定的列寫入 CSV 文件

[英]Writing only selected columns to CSV-file using CsvHelper

我有一個從 Web 服務中獲取數據的小程序。 該程序獲取 JSON 響應,將其映射到 POCO 並將對象寫入 CSV 文件(自動映射)。 當我要求“所有”數據集中的數據時,它工作得很好,但是,如果我像這樣查詢資源(通過 OData):“$select EmpNo, FirstName, LastName”,CSV 編寫器仍將寫入所有列到 CSV 標題,例如“EmpNo、FirstName、LastName、Street、Address、City、Age”等,然后將 0(如果是 int)、false(如果是布爾值)或“”(如果是字符串)插入到沒有數據。

Web 服務僅正確返回指定的列,因此這不是問題。 我使用 CsvHelper 進行對象映射和 CSV 寫入。 (但我願意使用任何可以解決我的問題的東西)

如果這是我在 OData 查詢中要求的,我只想將“EmpNo、FirstName、LastName”和列的數據寫入 CSV 文件。

有什么解決這個問題的好主意嗎?

在不知道您使用的確切代碼的情況下很難判斷。 但我的猜測是,當您編寫對象列表時,您正在使用其中包含額外字段的模型,這些字段都是空的,因為您沒有通過 odata 請求它們。

如果您只需要 CsvHelper 的子集,您可能需要指定一個CsvClassMap<T>並將您現有的模型映射到您想要的字段

這里有很多關於 CsvClassMap 的例子: http ://joshclose.github.io/CsvHelper/

write 方法可能會有一個方法重載,它將采用類映射。

您可以創建一個 ClassMapper 並指定您想要寫入的對象的哪些屬性(以及您想要如何編寫它們!)
https://joshclose.github.io/CsvHelper/examples/configuration/class-maps/mapping-properties

然后你去寫的時候,直接指定ClassMapper

using (var writer = new StreamWriter("path\\to\\file.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.Configuration.RegisterClassMap<NameOfClassMapper>();
    csv.WriteRecords(records);
}

暫無
暫無

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

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