У меня есть класс "TimePunch", который записывает пары времени входа / выхода для каждого пользователя, а также уровень флага, который наследуется от INotify и имеет несколько открытых пулов get / return, которые будут упущены для простоты.
{
private int ID;
private string UserID = App.Username;
private DateTime TimeIn;
private DateTime TimeOut;
private int Flag = 0; //0 = None, 1 = Manual, 2 = Edited, 3 = Unlikely, -1 = Deleted
private string Notes;
...
Я связываю их набор в качестве основного источника для просмотра списка, и у меня есть несколько кнопок, которые действуют как вкладки, позволяющие менеджеру переключаться на день недели, на который они смотрят, и естьконтроль изменения даты выходных и фильтрации для каждого пользователя.Ладно, все хорошо и прекрасно.
Я хочу, чтобы второй listView был привязан к запросу, который показывает своего рода «Обзор» источника данных, суммируя часы, отработанные на сотрудника каждый день.(MyHoursView TimePunch возвращает десятичное число часов между TimeIn / TimeOut)
В SQL искомый псевдокод будет выглядеть примерно так:
SELECT UserID,
MAX(FlagView) As Flag, --'FlagView' ignores -1 or deleted records
SUM(CASE WHEN myTimeIn.DayofWeek = DayofWeek.Monday
THEN myHoursView Else 0 END) As Monday,
SUM(CASE WHEN myTimeIn.DayofWeek = DayofWeek.Tuesday
THEN myHoursView Else 0 END) As Tuesday,
...
SUM(myHoursView) As Total
FROM PunchList
WHERE TimeIn > WeekEnding.AddDays(-7) AND
<= WeekEnding
GROUP BY UserID
Есть ли способ чистосделать это в LINQ?
(Entity Framework не может быть и речи - в основном для совместимости)