如何获得在linq中具有最大日期的数据
本文关键字:日期 数据 何获得 linq | 更新日期: 2023-09-27 18:05:37
这是一个linq查询,表"Timesheet_Log"具有DateTime类型的DT_CR列,我想获得最新DT_CR日期的查询,这是如何可能的?
var getEmployeeNames = (from emps in reslandentity.EMPLOYEE
join timesheet in reslandentity.TIMESHEET on emps.ID equals timesheet.RES_ID
join weekcal in reslandentity.WEEK_CALENDER on timesheet.WEEK_CAL_ID equals weekcal.ID
join log in reslandentity.TIMESHEET_LOG on timesheet.ID equals log.TIMESHEET_ID
join workflow in reslandentity.TIMESHEET_WORKFLOW on log.WORKFLOW_ID equals workflow.ID
where weekcal.WEEK_START_DT.Month == month
orderby log.DT_CR select new TimesheetModel
{
EMP_ID = emps.ID,
EMPLOYEE_NAME = emps.FIRST_NAME + " " + emps.LAST_NAME,
RES_TYPE = workflow.ORG_RES_TYPE,
EMP_STATUS = workflow.ACTION,
SDate = weekcal.WEEK_START_DT,
EDate = weekcal.WEEK_END_DT,
DT_CR=log.DT_CR
}).Distinct().ToList();
model.GetTimeSheetDetails = getEmployeeNames;
Please Help me to get the Query.
你还没有说清楚你是希望得到一个结果还是一个结果列表(每个时间表一个结果)。
如果你只需要一个单一的结果,答案是由lti Tyangi将很好。
如果您需要每个时间表的结果,您可以尝试以下操作:
var getEmployeeNames = (from emps in reslandentity.EMPLOYEE
join timesheet in reslandentity.TIMESHEET on emps.ID equals timesheet.RES_ID
join weekcal in reslandentity.WEEK_CALENDER on timesheet.WEEK_CAL_ID equals weekcal.ID
join mxLog in (
from lg in reslandentity.TIMESHEET_LOG
group lg by lg.TIMESHEET_ID into lgGrp
select new {lgGrp.Key, DT_CR = lgGrp.Max(x => x.DT_CR)}
) on timesheet.ID equals mxLog.Key
join log in reslandentity.TIMESHEET_LOG on new { a = mxLog.Key, b = mxLog.DT_CR} equals new{ a = log.TIMESHEET_ID, b = log.DT_CR}
join workflow in reslandentity.TIMESHEET_WORKFLOW on log.WORKFLOW_ID equals workflow.ID
where weekcal.WEEK_START_DT.Month == month
orderby log.DT_CR select new TimesheetModel
{
EMP_ID = emps.ID,
EMPLOYEE_NAME = emps.FIRST_NAME + " " + emps.LAST_NAME,
RES_TYPE = workflow.ORG_RES_TYPE,
EMP_STATUS = workflow.ACTION,
SDate = weekcal.WEEK_START_DT,
EDate = weekcal.WEEK_END_DT,
DT_CR=log.DT_CR
}).Distinct().ToList();
model.GetTimeSheetDetails = getEmployeeNames;
在这里,我们连接到每个时间表的日志分组,以获得每个时间表的最大日期,然后根据时间表的id和日期
var getEmployeeNames = (from emps in reslandentity.EMPLOYEE
join timesheet in reslandentity.TIMESHEET on emps.ID equals timesheet.RES_ID
join weekcal in reslandentity.WEEK_CALENDER on timesheet.WEEK_CAL_ID equals weekcal.ID
join log in reslandentity.TIMESHEET_LOG on timesheet.ID equals log.TIMESHEET_ID
join workflow in reslandentity.TIMESHEET_WORKFLOW on log.WORKFLOW_ID equals workflow.ID
where weekcal.WEEK_START_DT.Month == month
//orderby log.DT_CR
select new TimesheetModel
{
EMP_ID = emps.ID,
EMPLOYEE_NAME = emps.FIRST_NAME + " " + emps.LAST_NAME,
RES_TYPE = workflow.ORG_RES_TYPE,
EMP_STATUS = workflow.ACTION,
SDate = weekcal.WEEK_START_DT,
EDate = weekcal.WEEK_END_DT,
DT_CR=log.DT_CR
}).OrderByDescending(x=>x.DT_CR).FirstorDefault();
或
var getEmployeeNames = (from emps in reslandentity.EMPLOYEE
join timesheet in reslandentity.TIMESHEET on emps.ID equals timesheet.RES_ID
join weekcal in reslandentity.WEEK_CALENDER on timesheet.WEEK_CAL_ID equals weekcal.ID
join log in reslandentity.TIMESHEET_LOG on timesheet.ID equals log.TIMESHEET_ID
join workflow in reslandentity.TIMESHEET_WORKFLOW on log.WORKFLOW_ID equals workflow.ID
where weekcal.WEEK_START_DT.Month == month
//orderby log.DT_CR
select new TimesheetModel
{
EMP_ID = emps.ID,
EMPLOYEE_NAME = emps.FIRST_NAME + " " + emps.LAST_NAME,
RES_TYPE = workflow.ORG_RES_TYPE,
EMP_STATUS = workflow.ACTION,
SDate = weekcal.WEEK_START_DT,
EDate = weekcal.WEEK_END_DT,
DT_CR=log.DT_CR
}).OrderByDescending(x=>x.DT_CR).ToList().Take(1);