如何避免ExpandoObject展平?

时间:2018-09-21 10:56:47

标签: c# odata expandoobject

模型如下:

public class Foo
{
    public long Id { get; set; }
    public ExpandoObject Attributes { get; set; }
}

从Web API调用中得到的结果:

[
    {
        Id: 1,
        Attribute1: "XYZ",
        Attributes: "ABC"
    }
]

我希望得到的东西:

[
    {
        Id: 1,
        Attributes:
        {
            Attribute1: "XYZ",
            Attributes: "ABC"
        }
    }
]

控制器操作返回IQueryable。

public IQueryable<Foo> Get()
{
    var result = ...;
    return result.AsQueryable();
}

result变量是Foo对象的集合。 谁能解释为什么会这样?

1 个答案:

答案 0 :(得分:0)

好的,我找到了一个解决方案。我敢肯定不是最好的,但是可以。

我介绍了一个仅包含一个属性的类:

public class Bar
{
    public ExapndoObject Content { get; set; }
}

并在Foo类中使用它:

public class Foo
{
    public long Id { get; set; }
    public Bar Attributes { get; set; }
}

无论如何,我仍然对更好的解决方案感兴趣。