0

我正在使用 CsvHelper 从 CSV 文件创建动态对象。

我遇到的问题是有时名称中有非法字符,例如:

在此处输入图像描述

无论如何,我可以做这样的声明:

if (record.Towm/Area == "foo") ...

因为它是动态的,所以我认为我不能使用反射来循环它并通过字符串比较检查名称。

无论如何我可以通过命名数组或其他方法访问它吗?

4

2 回答 2

2

因为它是一个ExpandoObject,你应该能够像你一样使用索引器获取属性IDictionary

if(record["Town/Area"] == "foo") 

除此之外,您可以将其转换为IDictionary,并将其视为此类。

((IDictionary<String, Object>)record)

然后使用 linq 获得更多过度设计的好处:

if( record.First(kvp => kvp.Key == "City/Town").Value == foo ) 
于 2015-08-23T22:50:39.477 回答
0

使用它们的 column# 直接访问这些列,比如record.GetField(3)甚至record.GetField("Town/Area")等。

然后就可以比较了

if (String.Equals(record.GetField(3), "foo")) 
{
    //do my stuff.
}
于 2015-08-23T22:46:26.777 回答