如何解决字典和被转换为阻止 Scriban 模板渲染工作的字典的 ExpandoObject 之间有什么区别?
我正在尝试使用 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|
为什么模板不呈现键?有没有更好的方法可以在不创建新字典的情况下解决这个问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。