我正在嘗試基于其中一個屬性是串列的模型生成 CSV 檔案。所以,我的目標是指定一些屬性串列并根據這些屬性生成欄位和值。例如,結果可能如下:
| 屬性:品牌 | 屬性:品牌 | 屬性:尺寸 | 屬性:品牌 |
|---|---|---|---|
| 測驗值1 | 測驗值2 | 測驗值3 | 測驗值4 |
我正在嘗試使用匿名物件或模型物件但失敗了。

基本上,有兩個挑戰:
- 將串列屬性拆分到欄位。我看到有 Converter 方法,但它回傳字串
- 生成標頭名稱取決于指定。我看到有一個 Name 方法可以處理替代名稱。
關于如何解決它的任何想法/建議?使用匿名物件或模型會更好嗎?
注意:我根本不需要閱讀它。我只需要保存它。

uj5u.com熱心網友回復:
這是您可以做到的一種方式。
void Main()
{
var records = new List<ProductCsvModel>
{
new ProductCsvModel
{
DirectCosts = 1.1M,
Attributes = new List<dynamic>
{
new { Brand = "Test1" },
new { Season = "Test2" },
new { Brand = "Test3" },
new { Custom = "Test4" }
}
}
};
using (var csv = new CsvWriter(Console.Out, CultureInfo.InvariantCulture))
{
var first = records.First();
csv.WriteHeader<ProductCsvModel>();
foreach (var item in first.Attributes)
{
PropertyInfo[] properties = item.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
csv.WriteField("Attribute:" property.Name);
}
}
csv.NextRecord();
foreach (var record in records)
{
csv.WriteRecord(record);
foreach (var item in record.Attributes)
{
PropertyInfo[] properties = item.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
csv.WriteField(property.GetValue(item));
}
}
csv.NextRecord();
}
}
}
public class ProductCsvModel
{
public decimal DirectCosts { get; set; }
public List<dynamic> Attributes { get; set; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/419495.html
標籤:
上一篇:更改按鈕引數的最佳方法是什么C#
