Join中第二個參數和第三個參數即為兩張表關聯對應的字段
第四個參數new 后面如果不寫Model名,系統會自動生成帶字段的list類型
IQueryable<Operator> operators = operatorService.GetAll();
IQueryable<Training> trainings = trainingService.GetAll();
var list = trainings.Join(operators, a => a.OperatorId, b => b.Id, (a, b) => new OperatorTrainingReportVM
{
EmployeeNO = b.EmployeeNO,
Name = b.Name,
Sex = b.Sex,
AreaName = b.Area.Name,
CostName = b.Cost.Name,
OnBoardDate = b.OnBoardDate,
ShiftName = b.Shift.Name,
DirectorNO = b.Director.EmployeeNO,
DirectorName = b.Director.Name,
ConfirmDate = b.ConfirmDate,
IsDimission = b.DimissionDate != null ? true : false,
DimissionDate = b.DimissionDate,
ServiceDays = (int)DbFunctions.DiffDays(b.OnBoardDate, DateTime.Now),
PositionName = b.Position.Name,
PositionLevelName = b.PositionLevel.Name,
DimissionName = b.Dimission.Name,
DimissionReason = b.Dimission.Reason,
StartDate = a.StartDate,
EndDate = a.EndDate,
ExamineDate = a.ExamineDate,
ExpireDate = a.ExpireDate,
Enginner = a.Enginner,
Trainer = a.Trainer,
Score = a.Score,
StandardScore = a.StandardScore,
Result = a.Result,
CourseName = a.Course.Name,
OperationLevelName = a.OperationLevel.Name,
Enabled = b.Enabled
}).Where(whLamdba);
total = list.Count();
var result = list.OrderBy(t => t.EmployeeNO).Skip(start).Take(pageSize).ToList();
其中Join部分具體是inner join還是left join,EF會自動根據查詢條件生成相應的SQL