如何在Entity Framework中实现数据透视数据?

时间:2017-07-14 07:25:39

标签: c# entity-framework linq

我在ASP.NET MVC中创建了以下模型。现在我必须通过API或JSON格式发送产品数据。

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual IList<ProductAttribute> ProductAttributes { get; set; }
}

public class ProductAttribute
{
    public int Id { get; set; }
    public int ProductId { get; set; } //foreign key
    public string Key { get; set; }
    public string Value { get; set; }
}

目前,数据在转换为JSON后以这种方式出现。 enter image description here

但我希望将其转换为Pivot视图,就像这样。

enter image description here

如何使用Entity Framework或LINQ执行此操作?感谢

1 个答案:

答案 0 :(得分:2)

我会将输出更改为

[
    {
        "Id": 21098,
        "Name": "12 Port Fast USB Charging Station for iPad, iPhone",
        "Attributes":{
            "Size": "Large",
            "Length": "Short"
        }
    }
]

响应类看起来像

public class ProductResponse
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Dictionary<string,string> Attributes { get; set; }
}

您可以从查询中创建集合

IList<ProductResponse> response = myContext.Set<Product>()
    .Include( e => e.ProductAttributes )

    .Where( e => e.Id == 21098 )

    .Select( e => new ProductResponse {
        Id = e.Id,
        Name = e.Name,
        Attributes = e.ProductAttributes.ToDictionary( e => e.Key, e => e.Value ),
    } )
    .ToList();

并返回该集合