如何从DataContext.ExecuteQuery返回未知类型对象工作 [英] How to work with objects of unknown type returned from DataContext.ExecuteQuery

查看:487
本文介绍了如何从DataContext.ExecuteQuery返回未知类型对象工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,用动态的关键字在C#4.0我希望我能找到一个更好的解决方案,以应对由 DataContext.ExecuteQuery 返回类型的问题出现时, 。任意列选

So, with the advent of the dynamic keyword in C# 4.0 I am hoping I can find a better solution to the problem of dealing with types returned by DataContext.ExecuteQuery when arbitrary columns are selected.

在过去,我自己建立一个新型举行这样一个查询结果或使用的方法描述的in该SO帖子。所以,现在我能够下.NET 4.0的新项目运行的工作,我看着使用动态类型来完成的那么痛苦的方式是一样的。

In the past I have either created a new type to hold the result of such a query or used the method described in this SO post. So, now that I am able to work on a new project running under .NET 4.0, I looked into using a dynamic type to accomplish the same thing in a less painful manner.

所以,我这就给一个镜头:

So, I gave this a shot:

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不会为动态存在目的。所以,既然我用dynamic关键字这点经验是零,我在这里希望有人可以让我知道,如果我想在这里做(文章/博客文章或两个,没有实际经验),甚至有可能。我可能高估的魔力背后的executeQuery量,但我认为这可能是由于在幕后所做的属性映射工作。任何帮助深表感谢。

An exception is thrown at runtime because the property CustomerID does not exist for the dynamic object. So, since my experience with the dynamic keyword to this point is nil (an article/blog post or two, no real experience) I was hoping someone here could let me know if what I am trying to do here is even possible. I am probably overestimating the amount of 'magic' behind ExecuteQuery, but I thought this may work due to the property mapping done behind the scenes. Any help is much appreciated.

推荐答案

最近,我们已经写的短小精悍,该配合精美原题:

More recently, we've written dapper, which fits the original question beautifully:

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



它允许参数等,并且没有通过<一个(首选)类型的API code>查询< T> - 但动态 API正常工作太

It allows parameters etc, and there is a (preferred) typed API via Query<T> - but the dynamic API works fine too.

这篇关于如何从DataContext.ExecuteQuery返回未知类型对象工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆