0

我有一个必须解决的问题。我可以使用实体框架将下面的结果集转换为可编辑的数据透视表吗?我还想将数据保留在上下文中。我的数据是这样的:

在此处输入图像描述

在操作结束时,我希望看到的结果是: 在此处输入图像描述 请注意,创建为数据透视表的表应该是可编辑的。

4

1 回答 1

1

实体框架不支持以数据透视格式显示数据。因此,唯一的方法是 - 创建一个属性与结果集相同的类

public class Orders
{
    public int OrderId{get;set;}
    public int OrderShippingId{get;set;}
    public int ColorId{get;set;}
    [DisplayName("11")]
    public int Sizeid11 { get; set; }
    [DisplayName("12")]
    public int Sizeid12 { get; set; }
    [DisplayName("13")]
    public int Sizeid13 { get; set; }
    [DisplayName("14")]
    public int Sizeid14 { get; set; }
    [DisplayName("15")]
    public int Sizeid15 { get; set; }
    [DisplayName("16")]
    public int Sizeid16 { get; set; }
    [DisplayName("17")]
    public int Sizeid17 { get; set; }
}

使用 LINQ 查询将来自 EF 的数据添加到 List 中 - private OrderEntities ctx = new OrderEntities();

// A Linq to EF which creates a List of concreate class called IsoPivot.
private List<Orders> queryResults =
    (from ord in ctx.Orders
        orderby ord.Colorid ascending
        group ord by ord.OrderId
        into ordGroup
        select new Orders()
        {
            OrderId = ordGroup.Key,
            OrderShippingId= ordGroup.OrderShippingId,
            ColorId=ordGroup.ColorId,
            Sizeid11=ordGroup.where(j=>j.Sizeid==11).sum(j=>j.Quantity)
            Sizeid12=ordGroup.where(j=>j.Sizeid==12).sum(j=>j.Quantity)
            Sizeid13=ordGroup.where(j=>j.Sizeid==13).sum(j=>j.Quantity)
            Sizeid14=ordGroup.where(j=>j.Sizeid==14).sum(j=>j.Quantity)
            Sizeid15=ordGroup.where(j=>j.Sizeid==15).sum(j=>j.Quantity)
            Sizeid16=ordGroup.where(j=>j.Sizeid==16).sum(j=>j.Quantity)
             Sizeid17=ordGroup.where(j=>j.Sizeid==17).sum(j=>j.Quantity)
        }).ToList();
}

这是在可编辑字段中显示列表数据的方式。

为了进行编辑,您可以通过单击按钮提交列表中的更改并将更改提交回 EF。

于 2015-02-16T17:53:43.683 回答