无法按数据表分组
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
的代码是
以上是关于无法按数据表分组的主要内容,如果未能解决你的问题,请参考以下文章