【发布时间】:2018-02-20 19:32:35
【问题描述】:
我想仅使用 LINQ 执行以下操作。
我有一个时间表条目列表,其中包含用户的进出时间。该类如下所示:
public class TimeSheetLog
{
public Guid EmployeeId { get; set; }
public DateTime ClockInTimeStamp { get; set; }
public DateTime ClockOutTimeStamp { get; set; }
}
我正在传递一个List<TimeSheetLog>(),其中包含从年初至今的所有日志。
我正在尝试计算 1 月份的总工作时间(不考虑员工)。另请注意,我有一个名为 GetTimeDifferenceInMinutes() 的函数,它计算两个日期/时间值之间的分钟数。
这是我目前拥有的,但我觉得整个事情都可以只使用 LINQ 来完成。
public static int GetTotalTimeWorked(List<TimeSheetLog> logs, DateTime startDate, DateTime endDate)
{
// I'm passing 1/1/2018 for startDate and 1/31/2018 for endDate to this function
var totalTimeWorkedInMinutes = 0;
var januaryLogs = logs.Where(x => x.ClockInTimeStamp >= startDate &&
x.ClockOutTimeStamp <= endDate);
foreach(var item in januaryLogs)
{
totalTimeWorkedInMinutes += GetTimeDifferenceInMinutes(item.ClockInTimeStamp, itemClockOutTimeStamp);
}
return totalTimeWorkedInMinutes;
}
【问题讨论】: