我有下面的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中处理这个?**
答案 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();