Principales respuestas
Agrupar y sumar datos dataset

Pregunta
-
Buenos días compañeros,
Tengo el siguiente código:
if (gridView2.SelectedRowsCount == 0) { MessageBox.Show("Seleccione al menos una fila", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { DataTable dt = new DataTable("Productos"); dt.Columns.Add("ItemCode", typeof(string)); dt.Columns.Add("ItemName", typeof(string)); dt.Columns.Add("CodCompra", typeof(string)); dt.Columns.Add("Unidad", typeof(string)); dt.Columns.Add("Cliente", typeof(string)); dt.Columns.Add("Cantidad", typeof(int)); dt.Columns.Add("Precio", typeof(string)); dt.Columns.Add("CardName", typeof(string)); dt.Columns.Add("CardCode", typeof(string)); for (int i = 0; i < gridView2.RowCount; i++) { if (gridView2.IsRowSelected(i) == true) { DataRow fila = dt.NewRow(); fila["ItemCode"] = gridView2.GetRowCellValue(i, gridView2.Columns[1]).ToString(); fila["ItemName"] = gridView2.GetRowCellValue(i, gridView2.Columns[2]).ToString(); fila["CodCompra"] = gridView2.GetRowCellValue(i, gridView2.Columns[11]).ToString(); fila["Unidad"] = gridView2.GetRowCellValue(i, gridView2.Columns[12]).ToString(); fila["Cliente"] = gridView2.GetRowCellValue(i, gridView2.Columns[13]).ToString(); fila["Cantidad"] = gridView2.GetRowCellValue(i, gridView2.Columns[14]).ToString(); fila["Precio"] = gridView2.GetRowCellValue(i, gridView2.Columns[15]).ToString(); fila["CardName"] = gridView2.GetRowCellValue(i, gridView2.Columns[16]).ToString(); fila["CardCode"] = gridView2.GetRowCellValue(i, gridView2.Columns[17]).ToString(); dt.Rows.Add(fila); } } FrmDetalleSap frmDetalleSap = new FrmDetalleSap(this); dt = dt.AsEnumerable().GroupBy(r => new { Col1 = r["ItemCode"] }).Select(g => g.OrderBy(r => r["Cliente"]).First()).CopyToDataTable(); dt.AsEnumerable().Sum(x => x.Field<int>("Cantidad")); frmDetalleSap.gridControl2.DataSource = dt; frmDetalleSap.Show(); }
Lo que deseo hacer es pasarle al data set los campos agrupados y sumados por el campo cantidad, por supuesto cuando se cumpla el criterio de agrupación, la parte de la agrupación me funciona correctamente, lo que no logro hacer es la suma junto a la agrupación.
De antemano muchas gracias por la ayuda.
Respuestas
-
hola
no te animas a usar linq ? porque con este podrias agrupar sin problemas
aqui
[Linq] DataSet – Agrupar y totalizar
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator martes, 12 de diciembre de 2017 18:53
- Marcado como respuesta Crs_Chacon martes, 12 de diciembre de 2017 21:27
Todas las respuestas
-
hola
no te animas a usar linq ? porque con este podrias agrupar sin problemas
aqui
[Linq] DataSet – Agrupar y totalizar
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator martes, 12 de diciembre de 2017 18:53
- Marcado como respuesta Crs_Chacon martes, 12 de diciembre de 2017 21:27
-
-
Leandro tengo otra consulta, la agrupación y la suma funcionan correctamente el tema es que yo en el data set, tengo mas columnas y necesito mostrarlas, estoy aplicando
foreach (IGrouping<string, DataRow> item in datos) { DataRow row2 = dt.NewRow(); row2["ItemCode"] = item.Key; row2["ItemName"] = item.ToString(); row2["CodCompra"] = item.ToString(); row2["Unidad"] = item.ToString(); row2["Cliente"] = item.ToString(); row2["Cantidad"] = item.Sum<DataRow>(x => Convert.ToInt32(x["Cantidad"])); row2["Precio"] = item.ToString(); row2["CardName"] = item.ToString(); row2["CardCode"] = item.ToString(); dt.Rows.Add(row2); }
Pero en las filas que aplico .ToString(), me aparece este resultado