我正在使用 CsvHelper 从 CSV 文件创建动态对象。
我遇到的问题是有时名称中有非法字符,例如:
无论如何,我可以做这样的声明:
if (record.Towm/Area == "foo") ...
因为它是动态的,所以我认为我不能使用反射来循环它并通过字符串比较检查名称。
无论如何我可以通过命名数组或其他方法访问它吗?
因为它是一个ExpandoObject
,你应该能够像你一样使用索引器获取属性IDictionary
:
if(record["Town/Area"] == "foo")
除此之外,您可以将其转换为IDictionary
,并将其视为此类。
((IDictionary<String, Object>)record)
然后使用 linq 获得更多过度设计的好处:
if( record.First(kvp => kvp.Key == "City/Town").Value == foo )
使用它们的 column# 直接访问这些列,比如record.GetField(3)
甚至record.GetField("Town/Area")
等。
然后就可以比较了
if (String.Equals(record.GetField(3), "foo"))
{
//do my stuff.
}