2016-09-02 4 views
1
DataTable dt = new DataTable(); 
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("EmployeeId", typeof(int)), 
     new DataColumn("Name", typeof(string)), 
     new DataColumn("Salary", typeof(int)) }); 
dt.Rows.Add(1, "John Hammond", 45000); 
dt.Rows.Add(2, "Mudassar Khan", 32000); 
dt.Rows.Add(3, "Robert Schidner", 19000); 
dt.Rows.Add(3, "Suzanne Mathews", 18500); 

Это мой стол , и я хочу добавить зарплату.Как рассчитать сумму столбцов DataTable, используя C#

ответ

3

Вместо dt.Compute вы также можете использовать LINQ:

int sum = dt.AsEnumerable().Sum(r => r.Field<int>("Salary")); 

Хорошая вещь с помощью LINQ, что это так легко вычислить everage вместо:

double average = dt.AsEnumerable().Average(r => r.Field<int>("Salary")); 

или получить макс заработная плата:

int maxSalary = dt.AsEnumerable().Max(r => r.Field<int>("Salary")); 

или для фильтрации, засчитайте все зарплаты, превышающие 3000:

int countHighSalary = dt.AsEnumerable().Count(r => r.Field<int>("Salary") >= 3000); 
+0

Спасибо @Tim Schmelter. это работает. –

1

Функция DataTable Compute принимает два параметра 1. Выражение - это функция агрегации, такая как SUM, COUNT, MIN, MAX и AVG. 2. Фильтр - используется для фильтрации строк, таких как предложение WHERE. Если значение пуста, то рассматриваются все строки.

Вычисление DataTable без выражения фильтра В приведенном ниже примере суммарный (суммарный) столбец Заработная плата всех сотрудников вычисляется с использованием функции DataTable Compute. Выражение фильтра задано пустым, чтобы рассчитать сумму (всего) столбца «Заработная плата» всех строк.

int sum = Convert.ToInt32(dt.Compute("SUM(Salary)", string.Empty)); 

DataTable Вычислительный с фильтром экспрессией В примере, приведенном ниже, Сумма (Всего) заработная плата колонки работников, идентификатор больше 2 вычисляются с использованием функции DataTable Compute наряду с выражением фильтра.

int sum = Convert.ToInt32(dt.Compute("SUM(Salary)", "EmployeeId > 2")); 
Смежные вопросы