Итак, с появлением динамического ключевого слова в C # 4.0 я надеюсь, что смогу найти лучшее решение проблемы работы с типами, возвращаемыми DataContext.ExecuteQuery
, когда выбраны произвольные столбцы.
В прошлом я либо создавал новый тип для хранения результата такого запроса, либо использовал метод, описанный в этом сообщении SO . Итак, теперь, когда я могу работать над новым проектом, работающим под .NET 4.0, я решил использовать динамический тип, чтобы выполнить то же самое менее болезненным образом.
Итак, я дал этому выстрел:
var result = _db.ExecuteQuery<dynamic>( "SELECT CustomerID,City FROM Customers", new object[0] );
foreach( var d in result )
{
MessageBox.Show( String.Format( "{0}, {1}", d.CustomerID, d.City ) );
}
Исключение выдается во время выполнения, поскольку свойство CustomerID не существует для динамического объекта. Итак, поскольку мой опыт использования динамического ключевого слова к этому моменту равен нулю (статья или сообщение в блоге или два, нет реального опыта), я надеялся, что кто-то здесь может дать мне знать, возможно ли то, что я пытаюсь сделать здесь. Я, вероятно, переоцениваю количество «магии» за ExecuteQuery, но я подумал, что это может сработать из-за сопоставления свойств, сделанного за кулисами. Любая помощь очень ценится.