gpt4 book ai didi

c# - 如何处理从 DataContext.ExecuteQuery 返回的未知类型的对象

转载 作者:太空狗 更新时间:2023-10-30 00:45:40 27 4
gpt4 key购买 nike

因此,随着 C# 4.0 中 dynamic 关键字的出现,我希望能够找到更好的解决方案来解决选择任意列时 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 背后的“魔法”数量,但我认为这可能会起作用,因为在幕后完成了属性映射。非常感谢任何帮助。

最佳答案

最近,我们写了 dapper ,这非常符合原始问题:

var result = connection.Query( "SELECT CustomerID,City FROM Customers");
foreach( var d in result )
{
MessageBox.Show( String.Format( "{0}, {1}", d.CustomerID, d.City ) );
}

它允许参数等,并且通过 Query<T> 有一个(首选的)类型化 API - 但是 dynamic API 也能正常工作。

关于c# - 如何处理从 DataContext.ExecuteQuery 返回的未知类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5025702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com