asp.net - llenar - Función de cálculo de Datatable para filas
leer datatable c# (3)
Como sabemos, con la función de cálculo de datatable podemos obtener la suma de columnas. Pero quiero obtener la suma de una fila de tabla de datos. Voy a explicar con un ejemplo:
Tengo una imagen tipo tabla de datos a continuación: Con la función de cálculo podemos obtener la suma de cada columna (producto). Tal como para product1, 2 + 12 + 50 + 13 = 77.
Quiero obtener la suma de la compañía1: 2 + 6 + 4 + 3 + 5 = 20
http://img123.imageshack.us/img123/1517/61519307xx5.jpg
¿Cómo puedo hacerlo con asp.net 1.1?
Desde msdn :
Si debe realizar una operación en dos o más columnas, debe crear un DataColumn, establecer su propiedad Expression en una expresión adecuada y usar una expresión agregada en la columna resultante. En ese caso, dado un DataColumn con el nombre "total", y la propiedad Expression establecida a esto:
"Quantity * UnitPrice"
LINQ al rescate:
DataTable dt = WhateverCreatesDataTable();
DataRow dr = dt.Rows[0];
int sum = dt.Columns.Cast<DataColumn>().Sum(dc=>(int)dr[dc]);
Para aquellos que aún arrastran sus nudillos en las edades de piedra (también conocido como pre.Net 3.5 y LINQ):
DataTable dt = WhateverCreatesDataTable();
DataRow dr = dt.Rows[0];
int sum = 0;
foreach(DataColumn dc in dt.Columns)
sum += (int)dr[dc];
Como quiera resolver esto en 1.1, aquí está lo que puede hacer como una solución simple
DataColumn totalColumn = new DataColumn();
totalColumn.DataType = System.Type.GetType("System.Int32");
totalColumn.ColumnName = "Total";
totalColumn.Expression = "Product1 + Product2 + Product3 + Product4 + Product5";
// Populate and get the DataTable dt then add this computed column to this table
dt.Columns.Add(totalColumn);
//Now if you access the column "Total" of the table you will get the desired result.