Как сложить значения, поступающие из базы данных? - PullRequest
1 голос
/ 23 апреля 2020

У меня есть табель рабочего времени, который записывается на каждый день (с понедельника по пятницу) с EmployeeId для уникальной идентификации записей определенного сотрудника.

Поэтому, когда я выбираю табели для определенного сотрудника по идентификатору, у меня есть список табелей:

(
 TimesheetId(INT),
 EmployeeId(INT),
 Date(DATETIME),
 Hours(decimal),
 someotherstuff,
)

Для каждого дня будет вход с указанными часами.

Теперь я хочу заполнить <table> столбцами Месяц и Общее количество часов (добавить все часы из расписания по месяцам) каждого месяца. Я не могу понять, как обработать эти данные и поместить их в мою таблицу.

Финальная таблица должна выглядеть так:

Month      | Total Hours
March 2020 | 170 
April 2020 | 180 

1 Ответ

1 голос
/ 23 апреля 2020
var result = dbContext.Timesheets.OrderBy(x => x.Date)
    .GroupBy(x => new { x.Date.Year, x.Date.Month })
    .Select(x => new { Year = x.Key.Year, Month = x.Key.Month, Total = x.Sum(y => y.Hours) })
    .ToList()
    .Select(x => new
    {
        MonthAndYear = new DateTime(x.Year, x.Month, 1).ToString("MMMM yyyy", CultureInfo.InvariantCulture),
        TotalHours = x.Total
    })
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...