使用WCF Web Api进行大规模返回动态类型/ Expandos?

时间:2011-11-01 17:07:55

标签: .net c#-4.0 dynamic wcf-web-api massive

我想使用Massive进行WCF Web Api的数据访问,并返回dynamic或ExpandoObject / IEnumerable< ExpandoObject>来自我的网页api。

我基本上使用JsonNetMediaTypeFormatter,它使用Json.NET的ExpandoObject序列化,但所有内容都作为Json中的Key-Value对返回,如:

[
    {
        "Key":"ID",
        "Value":"1000"
    },
    {
        "Key":"FirstName",
        "Value":"John"
    },
    {
        "Key":"LastName",
        "Value":"Smith"
    }
]

但是,我想要的是:

[
    {
        "ID":"1000",
        "FirstName":"John",
        "LastName":"Smith",
    }
]

好像我使用的是具体类型:

public class Customer
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

从WCF Web Api返回时,如何将动态/ ExpandoObject格式化为具体对象的任何想法?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我认为你正在使用Expando Query并传递给WCF。只是尝试进行迭代或只是将ToList赋予您的集合。这将把ExpandoQuery转换为Expando对象集合。如果你是POCO来映射,因为客户就像你的问题一样。使用您的POCO对象进行选择。

如果您的查询是

,就像
Dynamic CustomerTable = DynamicObject("ConnectionString","TableName","PrimeryKey");

CustomerTable.All() //This will be ExpandoQuery

CustomerTable.All().Select(c=> new Customer () {FistName = c.FirstName, LastName = c.LastName}); // This will give collection of customer object. Just pass this as DTO to your WCF service.

我希望这会对你有所帮助。如果还有其他事情,请告诉我。