linq有助于排除空项

时间:2015-10-20 14:16:03

标签: c# linq linq-to-xml html-agility-pack

我有下面的linq表达式,它导出网页上的所有电子邮件标签。然而,它似乎也在捕捉空锚缺少href属性

项并抛出空引用异常错误:

  

{"值不能为空。\ r \ nParameter name:source"}

> var emailNodes =
> _htmlDocument.Value.DocumentNode.SelectNodes("//a[@href]")
>                           .Select(a => a.Attributes["href"].Value)
>                           .Where(href => href.StartsWith("mailto:")) // keep emails, skipp links
>                           .ToList();

LINQ是否有可以完全排除空值的调整?

  

编辑:如上所述,当html缺少href时,会出现错误   全部一起。有没有办法在LINQ中处理这个?**

1 个答案:

答案 0 :(得分:1)

检查没有href的标签,然后在使用点运算符之前检查null或空的href字符串。

var emailNodes =
    _htmlDocument.Value.DocumentNode.SelectNodes("//a[@href]")
                 .Where(a => a.Attributes["href"] != null)
                 .Select(a => a.Attributes["href"].Value)
                 .Where(href => !String.IsNullOrEmpty(href) && href.StartsWith("mailto:")) // keep emails, skipp links
                 .ToList();