C# 在lambda表达式中处理mvc视图中的空值

C# 在lambda表达式中处理mvc视图中的空值,c#,asp.net-mvc-4,model-view-controller,lambda,C#,Asp.net Mvc 4,Model View Controller,Lambda,当视图中的lower lambda表达式使用多个where子句比较日期和时间时,我试图处理null值,但它没有;我没法处理 @Model.TopicTime .Where(x => x.LectureStartDate == Convert.ToDateTime(@ViewBag.MinDate1) && x.LectureStartTime.ToString("hh:mm:ss") == @ViewBag.MinTime1 &

当视图中的lower lambda表达式使用多个where子句比较日期和时间时,我试图处理null值,但它没有;我没法处理

@Model.TopicTime
    .Where(x =>
        x.LectureStartDate == Convert.ToDateTime(@ViewBag.MinDate1) &&
        x.LectureStartTime.ToString("hh:mm:ss") == @ViewBag.MinTime1 &&
        x.LectureStartTime.AddHours(1).ToString("hh:mm:s") == @ViewBag.MinTime2)
    .FirstOrDefault()
    .TopicName;
处理空值但仍然不起作用时,会出现如下错误

中发生“System.NullReferenceException”类型的异常 App_Web_nbl342dp.dll,但未在用户代码中处理


好吧,当您进行空检查时,@Model也可能是空的


这里真正的问题是您的底层数据结构没有得到很好的定义。考虑到您只想显示TopicName,最好在controller中执行所有检查,然后在view中只显示@Model.TopicName,而不是在ViewBag中嵌入传递变量并在View中嵌入逻辑。

您是否可以将您的帖子重写为stackoverflow可读格式?那么您是否正在尝试确定
TopicName
是否为空?
讲师开始时间
可能为null,这是
FirstOrDefault()
将返回的结果,因此会破坏表达式。是的,我正在尝试确定TopicName是否为null。但是,你是对的,StartTime在其中变为null,所以我应该如何解决它,中断表达式还是如何?提前感谢,我只想检查where子句中的主题,如日期和讲座开始时间和讲座结束时间KAPE123。没有模型不为null,在where子句中,如果where条件为null,则它不允许我处理null。如果值不存在,那么如何处理空值
@(Model.TopicTime
    .Where(x => 
        x.LectureStartDate == Convert.ToDateTime(@ViewBag.MinDate1) &&
        x.LectureStartTime.ToString("hh:mm:ss") == @ViewBag.MinTime1 &&
        x.LectureStartTime.AddHours(15).ToString("hh:mm:ss") == @ViewBag.MinTime2)
    .FirstOrDefault()
    .TopicName  == null ? "" : 
  Model.TopicTime
      .Where(x => 
          x.LectureStartDate == Convert.ToDateTime(@ViewBag.MinDate1) &&
          x.LectureStartTime.ToString("hh:mm:ss") == @ViewBag.MinTime1 &&                                        
          x.LectureStartTime.AddHours(1).ToString("hh:mm:ss") == @ViewBag.MinTime2)
      .FirstOrDefault().TopicName
)