2016-11-01 4 views
2

У меня есть таблица данных с некоторыми столбцами, как это:сумма одного столбца с условием, используя LINQ

например:

WorkHour  Salary Name 
    60   100  A 
    70   120  B 
    65   105  C 

Сумма WorkHour:

Сумма Доход:

Я хочу, чтобы сумма столбцов «WorkHour» и «Зарплата», но с условием: If Name == A Добавить WorkHour, чтобы суммировать, но не добавлять его в Зарплата.

Вот мой код:

var resultSum = from row in dt.AsEnumerable() 
       group row by row.Field<string>("UserId") into grp 
       select new 
       { 
        Salary = grp.Sum(r => r.Field<decimal>("Salary")), 
        WorkHour = grp.Sum(r => r.Field<decimal>("WorkHour")) 
       }; 

foreach (var rn in resultSum) 
{ 
    decimal dSalary = rn.Salary; 
    decimal WorkHour = rn.WorkHour; 
} 
+0

LINQ 2 SQL, LINQ 2 объекта, рамки сущности? –

ответ

2

Группа записи, а затем при вычислении Salary добавить Where до того, как Sum:

var result = (from item in dt.AsEnumerable() 
       group item by item.Field<string>("UserId") into g 
       select 
       { 
        Salary = g.Where(i => i.Field<string>("Name") != "A") 
          .Sum(i => i.Field<decimal>("Salary")), 
        WorkHour = g.Sum(i => i.Field<decimal>("WorkHour")) 
       }).ToList(); 
+0

Спасибо @ Gilad Green. Это сработало. – shiva1367

+0

@ shiva1367 - добро пожаловать :) –

Смежные вопросы