我在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; }
}
但我希望将其转换为Pivot视图,就像这样。
如何使用Entity Framework或LINQ执行此操作?感谢
答案 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();
并返回该集合