![](/img/trans.png)
[英]Using CsvHelper, How to map to a second column, if the value of the first column equals 0
[英]CsvHelper Map Constant Value
我對.NET的CsvMapper有疑問。 我正在使用類映射器將對象映射到這樣的csv文件中:
Map(x => x.ProductId).Name("ProductId");
這工作正常,但如何將常量值寫入聲明的列中呢? 在每一行中都應為該靜態值。
我試過了
Map(x => "constant value").Name("Constant Value Column")
但會引發異常“非成員訪問”
我需要這樣做,因為必須將csv文件上載才能導入到另一個需要已定義列結構的系統。
提前致謝!
Map
用於通過名稱或索引將現有的CSV列映射到您的班級成員。 由於這似乎是您要添加的值,因此它不會存在於CSV中,並且應被映射Ignored
; 該值將由您的班級設置:
class SampleItem
{
public string Name { get; set; }
public string Descr { get; set; }
public int Group { get; set; }
public int Value { get; set; }
public decimal Price { get; set; }
public DateTime ItemDate { get; set; }
public bool Active { get; set; }
public string ConstVal { get; set; }
public SampleItem()
{
ConstVal = "Ziggy";
}
public class SampleItemMap : CsvHelper.Configuration.CsvClassMap<SampleItem>
{
public SampleItemMap()
{
AutoMap();
Map( m => m.ConstVal).Ignore();
}
}
}
由於CSV列與屬性的順序相同,因此可以使用AutoMap
。 ConstVal
屬性被Ignored
因為它起源於類。
List<SampleItem> sList = new List<SampleItem>();
using (StreamReader sr = new StreamReader(@"C:\Temp\sample.csv", false))
using (CsvReader csv = new CsvReader(sr))
{
csv.Configuration.Delimiter = ",";
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.RegisterClassMap<SampleItem.SampleItemMap>();
sList = csv.GetRecords<SampleItem>().ToList();
dgv2.DataSource = sList;
}
我知道這是一個老問題,可能您已經找到了解決方案,我正在為即將到來的搜索者發布此答案。
您可能只是使用下面的行在輸出的csv文件上映射一個常量值
Map().Index(10).Constant("your constant value");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.