【发布时间】:2011-05-13 17:31:10
【问题描述】:
因此,随着 C# 4.0 中动态关键字的出现,我希望能够找到更好的解决方案来解决在选择任意列时处理 DataContext.ExecuteQuery 返回的类型的问题。
在过去,我要么创建了一个新类型来保存此类查询的结果,要么使用了in this 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 背后的“魔法”数量,但我认为这可能是由于在幕后完成的属性映射而起作用的。非常感谢任何帮助。
【问题讨论】:
标签: c# linq-to-sql dynamic executequery