Доступ к динамическому свойству с "/" в имени

Я использую CsvHelper для создания динамического объекта из файла CSV.

У меня проблема в том, что иногда в имени встречаются недопустимые символы, как здесь:

Есть ли в любом случае, что я могу сделать заявление, как:

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

Поскольку он динамический, я не думаю, что смогу использовать отражение, чтобы зациклить его и проверить имя с помощью сравнения строк.

Есть ли в любом случае я могу получить к нему доступ через именованный массив или каким-либо другим методом?

2 ответа

Решение

Так как это ExpandoObject, вы должны иметь возможность получить свойства с индексатором, как если бы вы IDictionary:

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

За исключением этого, вы можете привести его к IDictionary и относитесь к нему как к такому.

((IDictionary<String, Object>)record)

Тогда используйте linq для еще большего совершенства:

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

Прямой доступ к столбцам с помощью их столбца #, например, record.GetField(3) или даже record.GetField("Town/Area") и т.п.

Тогда вы можете сравнить,

if (String.Equals(record.GetField(3), "foo")) 
{
    //do my stuff.
}
Другие вопросы по тегам