访问名称中带有“/”的动态 属性

Access dynamic property with "/" in name

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

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

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

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

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

我是否可以通过命名数组或其他方法访问它?

直接使用列号访问列,例如 record.GetField(3) 甚至 record.GetField("Town/Area")

那你可以比较一下,

if (String.Equals(record.GetField(3), "foo")) 
{
    //do my stuff.
}

因为它是 ExpandoObject,您应该能够像 IDictionary:

一样使用索引器获取属性
if(record["Town/Area"] == "foo") 

除此之外,您可以将其转换为 IDictionary,并照此处理。

((IDictionary<String, Object>)record)

然后使用 linq 获得更多过度设计的优点:

if( record.First(kvp => kvp.Key == "City/Town").Value == foo )