因此,随着 C# 4.0 中动态关键字的出现,我希望我能找到一个更好的解决方案来处理DataContext.ExecuteQuery
选择任意列时返回的类型的问题。
在过去,我要么创建了一个新类型来保存此类查询的结果,要么使用了此 SO post中描述的方法。因此,现在我能够处理在 .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 背后的“魔法”数量,但我认为这可能是由于在幕后完成的属性映射而起作用的。任何帮助深表感谢。