Доступ к динамическому свойству с "/" в имени
Я использую 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.
}