无法按数据表分组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法按数据表分组相关的知识,希望对你有一定的参考价值。

我正在尝试按以下数据表分组:

+-------+---------+---------------------+---------+-----------+--------+----------+--------------+---------+-----------+---------+------------+
| ID_OR | TIPO_OR | ORA_OR              | SENT_OR | ID_OR_CFG | ID_ART | TIPO_ART | COD_ART      | QTA_ART | ID_OR_ART | COD_VAR | ID_ART_VAR |
+-------+---------+---------------------+---------+-----------+--------+----------+--------------+---------+-----------+---------+------------+
| 40    | MENU    | 10/06/2020 15:56:47 | 0       | 1         | 132    | PLUREP   | CAFFE        | 1       | 40        |         |            |
+-------+---------+---------------------+---------+-----------+--------+----------+--------------+---------+-----------+---------+------------+
| 40    | MENU    | 10/06/2020 15:56:47 | 0       | 1         | 133    | PLUREP   | REPARTO 0019 | 1       | 40        |         |            |
+-------+---------+---------------------+---------+-----------+--------+----------+--------------+---------+-----------+---------+------------+
| 40    | MENU    | 10/06/2020 15:56:47 | 0       | 1         | 134    | PLUREP   | REPARTO 0018 | 1       | 40        |         |            |
+-------+---------+---------------------+---------+-----------+--------+----------+--------------+---------+-----------+---------+------------+
| 40    | MENU    | 10/06/2020 15:56:47 | 0       | 1         | 135    | PLUREP   | REPARTO 0037 | 1       | 40        |         |            |
+-------+---------+---------------------+---------+-----------+--------+----------+--------------+---------+-----------+---------+------------+
| 40    | MENU    | 10/06/2020 15:56:47 | 0       | 1         | 136    | PLUREP   | CAFFE        | 1       | 40        | VAR0001 | 136        |
+-------+---------+---------------------+---------+-----------+--------+----------+--------------+---------+-----------+---------+------------+
| 40    | MENU    | 10/06/2020 15:56:47 | 0       | 1         | 136    | PLUREP   | CAFFE        | 1       | 40        | VAR0002 | 136        |
+-------+---------+---------------------+---------+-----------+--------+----------+--------------+---------+-----------+---------+------------+
| 40    | MENU    | 10/06/2020 15:56:47 | 0       | 1         | 136    | PLUREP   | CAFFE        | 1       | 40        | VAR0003 | 136        |
+-------+---------+---------------------+---------+-----------+--------+----------+--------------+---------+-----------+---------+------------+

datatable中的数据来自mysql,该表表示订单信息,物料和物料的变体,因此我试图建立一个包含其物料的订单清单,其中包含物料的变体。] >

首先,我需要按等于订单ID的ID_OR对数据表进行分组,因此我尝试执行以下var ordini = dt.AsEnumerable().GroupBy(r => r.Field<int>("ID_OR"));,但它没有任何效果,通过ordini进行的迭代无论如何都要遍历所有数据表行。 ..然后在ordini迭代中,我试图通过仍然按ID_ART将它们分组来迭代每个订单的项目,但是即使该group by也无效,并且只是在ID_ART 136中将项目添加了三倍,列表。

我用来建立订单列表的整个代码如下:

var ordini = dt.AsEnumerable().GroupBy(r => r.Field<int>("ID_OR"));
foreach(var ordine in ordini)

    int id_ordine = ordine.Key;
    foreach (DataRow ro in ordine)
    
        List<Ordine.Articoli> list_articoli = new List<Ordine.Articoli>();
        var articoli = dt.AsEnumerable().Where(r => r.Field<int>("ID_OR_ART") == id_ordine).GroupBy(r => r.Field<int>("ID_ART"));
        foreach(var articolo in articoli)
        
            int id_articolo = articolo.Key;
            foreach (DataRow ra in articolo)
                           
                List<Ordine.Varianti> list_varianti = new List<Ordine.Varianti>();
                var varianti = articolo.Where(r => r.Field<int?>("ID_ART_VAR") == id_articolo);
                foreach (DataRow rv in varianti)
                
                    list_varianti.Add(new Ordine.Varianti(rv.Field<string>("COD_VAR"), id_articolo));
                
                list_articoli.Add(new Ordine.Articoli(id_articolo, ra.Field<string>("TIPO_ART"), ra.Field<string>("COD_ART"), ra.Field<float>("QTA_ART"), ra.Field<int>("ID_OR_ART"), list_varianti));
            
        
        list_ordini.Add(new Ordine(id_ordine, ro.Field<string>("TIPO_OR"), ro.Field<DateTime>("ORA_OR"), Convert.ToBoolean(ro.Field<ulong>("SENT_OR")), ro.Field<int>("ID_OR_CFG"), list_articoli));
    

并且json中该值的返回值如下:

["id":40,"tipo":"MENU","dataora":"2020-06-10T15:56:47","sent":false,"cfg":1,"articoli":["id":132,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":[],"id":133,"tipo":"PLUREP","cod":"REPARTO 0019","qta":1,"id_ordine":40,"varianti":[],"id":134,"tipo":"PLUREP","cod":"REPARTO 0018","qta":1,"id_ordine":40,"varianti":[],"id":135,"tipo":"PLUREP","cod":"REPARTO 0037","qta":1,"id_ordine":40,"varianti":[],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136]],"id":40,"tipo":"MENU","dataora":"2020-06-10T15:56:47","sent":false,"cfg":1,"articoli":["id":132,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":[],"id":133,"tipo":"PLUREP","cod":"REPARTO 0019","qta":1,"id_ordine":40,"varianti":[],"id":134,"tipo":"PLUREP","cod":"REPARTO 0018","qta":1,"id_ordine":40,"varianti":[],"id":135,"tipo":"PLUREP","cod":"REPARTO 0037","qta":1,"id_ordine":40,"varianti":[],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136]],"id":40,"tipo":"MENU","dataora":"2020-06-10T15:56:47","sent":false,"cfg":1,"articoli":["id":132,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":[],"id":133,"tipo":"PLUREP","cod":"REPARTO 0019","qta":1,"id_ordine":40,"varianti":[],"id":134,"tipo":"PLUREP","cod":"REPARTO 0018","qta":1,"id_ordine":40,"varianti":[],"id":135,"tipo":"PLUREP","cod":"REPARTO 0037","qta":1,"id_ordine":40,"varianti":[],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136]],"id":40,"tipo":"MENU","dataora":"2020-06-10T15:56:47","sent":false,"cfg":1,"articoli":["id":132,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":[],"id":133,"tipo":"PLUREP","cod":"REPARTO 0019","qta":1,"id_ordine":40,"varianti":[],"id":134,"tipo":"PLUREP","cod":"REPARTO 0018","qta":1,"id_ordine":40,"varianti":[],"id":135,"tipo":"PLUREP","cod":"REPARTO 0037","qta":1,"id_ordine":40,"varianti":[],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136]],"id":40,"tipo":"MENU","dataora":"2020-06-10T15:56:47","sent":false,"cfg":1,"articoli":["id":132,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":[],"id":133,"tipo":"PLUREP","cod":"REPARTO 0019","qta":1,"id_ordine":40,"varianti":[],"id":134,"tipo":"PLUREP","cod":"REPARTO 0018","qta":1,"id_ordine":40,"varianti":[],"id":135,"tipo":"PLUREP","cod":"REPARTO 0037","qta":1,"id_ordine":40,"varianti":[],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136]],"id":40,"tipo":"MENU","dataora":"2020-06-10T15:56:47","sent":false,"cfg":1,"articoli":["id":132,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":[],"id":133,"tipo":"PLUREP","cod":"REPARTO 0019","qta":1,"id_ordine":40,"varianti":[],"id":134,"tipo":"PLUREP","cod":"REPARTO 0018","qta":1,"id_ordine":40,"varianti":[],"id":135,"tipo":"PLUREP","cod":"REPARTO 0037","qta":1,"id_ordine":40,"varianti":[],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136]],"id":40,"tipo":"MENU","dataora":"2020-06-10T15:56:47","sent":false,"cfg":1,"articoli":["id":132,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":[],"id":133,"tipo":"PLUREP","cod":"REPARTO 0019","qta":1,"id_ordine":40,"varianti":[],"id":134,"tipo":"PLUREP","cod":"REPARTO 0018","qta":1,"id_ordine":40,"varianti":[],"id":135,"tipo":"PLUREP","cod":"REPARTO 0037","qta":1,"id_ordine":40,"varianti":[],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136],"id":136,"tipo":"PLUREP","cod":"CAFFE","qta":1,"id_ordine":40,"varianti":["cod":"VAR0001","id_articolo":136,"cod":"VAR0002","id_articolo":136,"cod":"VAR0003","id_articolo":136]]]

虽然它只需要创建一个数组项,其中所有项都在其中...

所以问题是如何正确地按数据表分组?

我正在尝试按以下数据表进行分组:+ ------- + --------- + ------------------ --- + --------- + ----------- + -------- + ---------- + ---- ---------- + --------- + ----------- + --------- + ------- ----- + | ID_OR ...

答案

似乎我必须在.Select之后使用.GroupBy并将分组的dt复制到一个新的dt中,因此使用.GroupBy的代码是

以上是关于无法按数据表分组的主要内容,如果未能解决你的问题,请参考以下文章

Vuetify 数据表分组与分页未按预期工作

将两个 Pandas 按对象分组

PostgreSQL 查询按天计数/分组并显示没有数据的天数

sqlserver 分组查询

列表视图按日期分组 Dart

如何按前缀对字符串进行分组