检查空值

时间:2011-02-13 16:49:28

标签: c# .net asp.net

 var entries = from video in Video.GetTopVideos().AsEnumerable()
                      select
                      new XElement("item",
                          new XElement("title", video.Title),
                          new XElement("category", video.Tags[video.Tags.Count-1].Name),
                          //...........

如果属性video.Tags == null则抛出异常。 我可以检查空值吗?

3 个答案:

答案 0 :(得分:2)

是的,你可以。您可以将该行重写为

video.Tags != null ? new XElement(...) : null

如果Tags为空,则不会在生成的XML中为XElement发出category。当然,如果愿意,您可以选择提供另一个默认元素而不是null。

答案 1 :(得分:2)

是的,你可以:

var entries = from video in Video.GetTopVideos().AsEnumerable()
                      where video.Tags != null
                      select
                      new XElement("item",
                          new XElement("title", video.Title),
                          new XElement("category", video.Tags[video.Tags.Count-1].Name),
                          //...........

或者,如果您想确保即使Tags属性为null也总是有某些内容:

var entries = from video in Video.GetTopVideos().AsEnumerable()
   let cat = (video.Tags != null && video.Tags.Count > 0) ? video.Tags[video.Tags.Count-1].Name : "**No Category**
   select
   new XElement("item",
       new XElement("title", video.Title),
       new XElement("category", cat),
       //...........

答案 2 :(得分:0)

添加一个where子句,声明:

其中video.Tags!= null

这会将结果限制为仅包含标记的结果。

您的查询最终将如下所示:

var entries = from video in Video.GetTopVideos().AsEnumerable()
              where video.Tags != null
              select  new XElement("item",
                      new XElement("title", video.Title),
                      new XElement("category", video.Tags[video.Tags.Count-1].Name),
                      //...........