LINQ:OrderByDescending表中的多个日期的最后一个值

时间:2018-03-16 01:51:07

标签: c# linq

我正在尝试在LINQ查询上执行OrderByDescending。目前我在ProcedureDate字段上执行OrderByDescending。

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

我想要完成的任务:  我想修改我的LINQ查询,以便它可以检查是否在ChangeProcedureDate1,ChangeProcedureDate2和ChangeProcedureDate3为NULL的情况下,然后是OrderBy ProedureDate,因为没有更改。如果ProcedureDate,ChangeProcedureDate1已填满且ChangeProcedureDate2和ChangeProcedureDate3为NULL,那么我们需要OrderBy ChangeProcedureDate1。对于ChangeProcedureDate2和ChangeProcedureDate3也是如此。基本上我需要在多个DateTimeFields中找到最新的日期条目并按顺序执行。

以下是我的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中执行此操作?

1 个答案:

答案 0 :(得分:1)

试试这个:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {

  if (argc == 1) {
      printf("Usage: %s NUM\n", argv[0]);
      return 1;
  }

  int n = strtol(argv[1], NULL, 10);

  for (int i = 0; i < n; i++) {
      printf("%d", i);
  }
  return 0;
}

或者,根据需要更改属性订单。