2015-08-23 68 views
0

我使用CsvHelper從CSV文件創建動態對象。在名稱中使用「/」訪問動態屬性

我的問題是,有時也有在名稱中非法字符,喜歡這裏:

enter image description here

反正是有,我可以做一個聲明:

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

因爲它是動態的我不認爲我可以使用反射循環它並檢查名稱與字符串比較。

有無論如何我可以通過命名數組或其他方法訪問它?

+0

您是否嘗試過的索引?例如:'record [「Town/Area」]' – Eris

+0

如何對動態對象執行此操作? – Guerrilla

回答

2

因爲它是一個ExpandoObject,你應該能夠用得到的屬性像你這樣的索引將一個IDictionary

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

除非,你可以將其轉換爲n IDictionary,並將其視爲如此。

((IDictionary<String, Object>)record) 

然後使用LINQ的更過度設計的善良:

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

我忘記了ExpandoObect可以命名索引器。謝謝 – Guerrilla

0

直接接入使用其列#列,像record.GetField(3)甚至record.GetField("Town/Area")

然後你就可以比較,

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