在对LINQ执行操作之前检查LINQ中的空值

时间:2014-07-09 14:56:16

标签: linq sharepoint-2010

我正在使用SharePoint 2010 REST服务从SP列表中提取信息。其中一个条件是,如果记录中存在日期,并且该日期的年份是今年,则将其包括在内。否则,不要。

我关注的是我必须在日期字段上使用日期转换方法,如果该字段为null,则代码将失败。有没有办法在使用强制转换之前检查值是否为空?

我目前的代码在这里:

    Dim results As List(Of CurrentProjectsItem) =
        (From items In service.CurrentProjects
         Where (items.StatusValue = "Closed" Or CDate(items.DateClosed).Year = Now.Year))
         Order By items.Priority
         Select items).ToList()

任何帮助都会受到赞赏,我不会经常使用LINQ!

1 个答案:

答案 0 :(得分:0)

您可以在您的情况下加入该检查。所以这个:

CDate(items.DateClosed).Year = Now.Year

逻辑上变成了这个:

((items.DateClosed Is Not Nothing) And (CDate(items.DateClosed).Year = Now.Year))

(虽然我很好奇首先是<​​em>类型 DateClosed,如果不是Date?)

修改

  

DateClosed是日期?

在这种情况下,它是一个Nullable(Of Date)对象,其中包含用于检查此属性的属性:

((items.DateClosed.HasValue) And (items.DateClosed.Value.Year = Now.Year))

无需施法。