繁体   English   中英

用于按列中的值分组的 Linq 查询

[英]Linq query for getting group by values in columns

我总共有 3 个表,其中有数据

  1. 供应商主表有供应商列表

  2. 具有类别列表的类别主表。

  3. 产品主表,其中包含提供此产品的供应商的产品详细信息和外键以及此产品所在类别的外键。 本表数据如下:

在此处输入图像描述

当我在加入表格后将数据与 Category 和 Vendor 明智地分组时,我得到了如下结果

在此处输入图像描述

现在我需要的是显示汇总数据,显示每个类别中的供应商明智产品及其最后一列的总计,我要求这些数据以下面的格式显示,这样如果将来我再创建一个供应商,那么它将创建另一个该供应商的列及其值也添加到最后一列的总计中。

在此处输入图像描述

因此,我需要来自 C# 中的 LINQ 查询的此输出,我可以在使用实体框架连接的数据库上执行该输出,以便将其绑定到我的数据表。

    void Main()
{
    var orders = new List<Order>(){
        {new Order("C1","P1","V1")},
        {new Order("C1","P2","V1")},
        {new Order("C1","P3","V1")},
        {new Order("C2","P4","V1")},
        {new Order("C2","P5","V1")},
        {new Order("C3","P1","V2")},
        {new Order("C3","P2","V2")},
        {new Order("C3","P4","V2")},
        {new Order("C1","P6","V2")},
        {new Order("C1","P7","V2")},
    };
    var q = orders
        .GroupBy(x => x.Category)
        .Select(x => new{
            Category = x.Key,
            V1 = x.Count(y => y.Vendor == "V1"),
            V2 = x.Count(y => y.Vendor == "V2"),
            Total = x.Count()
        });
}
public class Order
{
    public string Product { get; set; }
    public string Category {get; set;}
    public string Vendor {get;set;}
    public Order(string category,string product,string vendor)
    {
        Category = category;
        Product = product;
        Vendor = vendor;
    }
}

可能不是最通用的解决方案,但它在某些有限的情况下可能很有用,特别是当列数很少时。 顺便说一句,如果要报告数据透视表,情况就是这样。

另外,请注意,供应商不会是我首选的专栏候选人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM