public JsonResult GetWeekTimeSheetData(DateTime Date)
{
try
{
var thisWeekStart = Date.AddDays(-(int)Date.DayOfWeek);
var thisWeekEnd = thisWeekStart.AddDays(7).AddSeconds(-1);
List<Object> lstData = new List<object>();
var Taskss = db.Tasks.Where(x => x.IsActive == true && x.TaskName != null).Select(x => x.TaskName);
while (thisWeekStart.Date <= thisWeekEnd.Date)
{
double hourss = db.TimesheetData.Where(x => x.Date == thisWeekStart && x.Date != null).GroupBy(y => (double?)y.Hours) ?? 0;
double hours = db.TimesheetData.Where(x => x.Date == thisWeekStart && x.Date != null).Sum(y => (double?)y.Hours) ?? 0;
lstData.Add(new { DayName = thisWeekStart.ToString("dddd"), Hours = hours, TAskName=q });
thisWeekStart = thisWeekStart.AddDays(1);
}
return Json(lstData);
我的表是:
TimeSheetDatas(Guid ID,double hours,DateTime Date,Guid TaskID,virtual
TimeSheet TimeSheet ).
TimeSheets(Guid ID,DateTime StartDate,DateTime EndDate,List<TimeSheetData>
TimeSheetData).
Tasks( String TaskName,string TaskDescription)
我想要几小时=这是每个任务的小时总和介于这个周末和本周末之间。我试图写查询但我不知道如何使用groupby函数。要知道我的问题是什么问题
double hourss = db.TimesheetData.Where(x => x.Date == thisWeekStart &&
x.Date != null).GroupBy(y => (double?)y.Hours) ?? 0;
它的错,但我试过这个。我只想要在每周开始和本周末的TimeSheetDatas中完成每项任务的总和。
你可以这样试试;
var timesCalculation = db.TimesheetData
.GroupBy(x => x.Task)
.Select(grp => new
{
Task = grp.Key.Task,
HourSum = grp.Sum(x => (double?)x.Hour ?? 0)
});
我假设你在TimesheetData
实体中有Task
的导航属性。