这是我的完整代码
var SearchValue = dbContext.TimeSheetDetails
.Where(t => t.StartDate == date &&
t.CreatedBy == userId &&
t.ManageTask.ProjectId == projectId)
.ToList()
.Select(x =>
new TimeSheetModel()
{
TaskId = Convert.ToInt32(x.TaskId),
EndDate = x.EndDate,
EndTime = x.EndTime,
Remarks = x.Remarks,
StartDate = x.StartDate,
StartTime = x.StartTime,
Status = Convert.ToInt32(x.StatusType.StatusTypeId),
StatusName = Convert.ToString(x.StatusType.StatusTypeName),
TimeSheetId = x.TimeSheetId,
TotalHours = x.TotalHours,
CreatedBy = Convert.ToInt32(x.CreatedBy),
Description = x.Description,
TaskName = dbContext.TaskDetails.ToList().Where(t => t.TaskId == Convert.ToInt32(x.TaskId)).FirstOrDefault().TaskName
}).ToList();
所有内容都获得正确的数据,但TaskName
始终设置为“1”。没有得到正确的名称。
见这一行
TaskName = dbContext.TaskDetails
.ToList()
.Where(t => t.TaskId == Convert.ToInt32(x.TaskId))
.FirstOrDefault().TaskName
以上查询总是返回“1”,我不知道是什么问题。
您可以快速观看结果。见下图
此外,我尝试过此查询,而不是我的上述查询
TaskName = x.ManageTask.TaskDetails.FirstOrDefault(t => t.TaskId == Convert.ToInt32(x.TaskId)).TaskName
但没有运气,它不起作用,与返回“1”相同