1

我正在尝试使用 Scriban 呈现从 CSV 加载的内容。不幸的是,除非我明确调用 ToDictionary 来创建另一个字典,否则它无法正确呈现,我想了解原因以及修复它的正确方法。

var reader = new StreamReader(csvFile.ToString());
var csv = new CsvReader(reader, CultureInfo.InvariantCulture);
var records = csv.GetRecords<dynamic>();
    
var templateStr = "|{{ReportID}}|";

foreach(ExpandoObject record in records){
    var template = Template.Parse(templateStr);
    var row = (IDictionary<string,object>)record;

    var reportID = row["ReportID"]; // Works as dictionary

    var expando = template.Render(record);
    var expandoCast = template.Render(row);
    var expandoToDictionary = template.Render(record.ToDictionary(x=>x.Key, x=>x.Value));

    Console.WriteLine($"{reportID} expando: {expando} expandoCast:{expandoCast} expandoToDictionary:{expandoToDictionary}");  
}

印刷

3940268 展开:|| expandoCast:|| expandoToDictionary:|3940268|

为什么模板不渲染键?有没有更好的方法可以在不创建新字典的情况下解决这个问题?

4

0 回答 0