C# LINQ:OrderByDescending(按表中多个日期的最后一个值递减)

C# LINQ:OrderByDescending(按表中多个日期的最后一个值递减),c#,linq,C#,Linq,我正在尝试对我的LINQ查询执行OrderByDescending。目前,我正在“过程日期”字段上执行OrderByDescending 业务场景: 用户可以进入应用程序并在应用程序中添加最多3次ChangeProcedureDates。所以,在数据库中还有其他字段称为ChangeProcedureDate1、ChangeProcedureDate2和ChangeProcedureDate3 我正在努力实现的目标: 我想修改我的LINQ查询,以便它可以检查ChangeProcedureDate1

我正在尝试对我的LINQ查询执行OrderByDescending。目前,我正在“过程日期”字段上执行OrderByDescending

业务场景: 用户可以进入应用程序并在应用程序中添加最多3次ChangeProcedureDates。所以,在数据库中还有其他字段称为ChangeProcedureDate1、ChangeProcedureDate2和ChangeProcedureDate3

我正在努力实现的目标: 我想修改我的LINQ查询,以便它可以检查ChangeProcedureDate1、ChangeProcedureDate2和ChangeProcedureDate3是否为空,然后再检查OrderBy ProduredAte,因为没有更改。如果填写了ProcedureDate、ChangeProcedureDate1,并且ChangeProcedureDate2和ChangeProcedureDate3为空,则我们需要按ChangeProcedureDate1排序。ChangeProcedureDate2和ChangeProcedureDate3也是如此。基本上,我需要在多个DateTimeFields中找到最新的日期条目,并对其执行orderby

下面是我的LINQ查询

 var unsortedItems = context.ReservationRequests
                   .Where(s => ((s.ReservationRequestStatusId.HasValue) &&
                   (s.ReservationRequestStatusId.Value == ReservationRequestStatusId)) &&
                   (Roles.Any(y => s.SubmitterGroupName == y) ||
                   s.CreatedBy == currentUserGuid))
                 .OrderByDescending(x => x.ProcedureDate  ?? DateTime.MinValue);
我很难理解如何在LINQ做到这一点

试试这个:

.OrderByDescending(x => x.ChangeProcedureDate3 ?? x.ChangeProcedureDate2 ?? x.ChangeProcedureDate1 ?? x.ProcedureDate);

或者,根据需要更改属性的顺序。

这不是在说(检查过程日期是否为null。如果是,请移至ChangeProcedureDate1。如果ChangeProcedureDate1为null,则移至ChangeProcedureDate2。如果ChangeProcedureDate2为null,则移至ChangeProcedureDate3)?如果是这种情况,则此操作将失败,因为用户可以输入ChangeProcedureDate2。这并不意味着我们正在为ChangeProcedureDate1和ProcedureDate@HereToLearn_然后从
ChangeProcedureDate3
重新排序到
ChangeProcedureDate1
。你会得到最新的消息date@HereToLearn_进展如何?这对我很有效。非常感谢你的想法。我不敢相信我自己看不到。你能不能像这个问题中提到的那样用降序法