使用 Entity Framework Core 查找最大日期 - 在 Razor Pages 中

Finding Max Date using Entity Framework Core - in Razor Pages

我正在构建一个 Razor Pages Web 应用程序,用于注册用户参加考试。 ExamRegistration 模型有一个名为 MaxDateForExam 的字段,它可以为空,因为这是以后添加到现有数据库的新功能。创建考试时,我想在 OnPost 之后用一个值填充此字段。

如果用户是第一次申请考试,只需获取 ExamDate 并添加 1 年。在随后的注册(用户考试失败)中,我不想创建一个新的 MaxDate,而是从第一次注册记录中获取 MaxDate

我的 ExamRegistrations 模型具有以下 属性

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? MaxDateForExam { get; set; }

在我要为一个人注册新考试的页面上,我需要执行检查:

我只是找不到正确的代码来提取 MaxDateForExam 的值。这是我的部分代码....

public DateTime MaxWriteDate { get; set; }                 
public Models.ExamRegistration ApplicantRecord { get; set; }

if(ExamRegistration.ExamAttempt == "1st Attempt")
     {                    
        MaxWriteDate = ExamRegistration.Exam.ExamDate.AddYears(1);
     }
     else
     {
         ApplicantRecord = _context.ExamRegistrations                        
         .Where(m => m.ApplicantID == ExamRegistration.ApplicantID && m.ExamAttempt == "1st Attempt") 
         .FirstOrDefault();

         if(ApplicantRecord == null)
          {
              MaxWriteDate = ExamRegistration.Exam.ExamDate.AddYears(1);
          }
          else
          {
               MaxWriteDate = ApplicantRecord.MaxDateForExam;   ???????FAILS????????
          }
      }

我能得到的任何指导都会有所帮助。错误似乎总是围绕无法转换 System.DateTime?至 System.DateTime。缺演员吗

我已将答案标记为正确,并且我学到了更多 C# 和可空类型。谢谢。

我能够通过使用代码克服错误:

MaxWriteDate = OldMaxWriteDate.MaxDateForExam ?? DateTime.MinValue;

感谢您的帮助。

PS...如果我需要标记其他内容(第一次使用该资源的用户)请告诉我。

谢谢

这是因为 MaxDateForExam 的值可能为 null,因此不允许将其分配给不可为 null 的变量。试试这个:

      if(ApplicantRecord == null)
      {
          MaxWriteDate = ExamRegistration.Exam.ExamDate.AddYears(1);
      }
      else
      {
          if (MaxDateForExam.HasValue)
          {
              MaxWriteDate = ApplicantRecord.MaxDateForExam.Value;
          }
          else
          {
              // Handle case where MaxDateForExam does not have a value
          }
      }

有关详细信息,请参阅可空值类型文档:

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nullable-value-types