【发布时间】:2015-10-20 14:16:02
【问题描述】:
我有下面的 linq 表达式,它派生了网页上的所有电子邮件标签。但是,它似乎也正在捕获空锚缺少 href 属性
items 并抛出空引用异常错误:
{"值不能为空。\r\n参数名称:源"}
> 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 中处理这个问题?**
【问题讨论】:
-
如果使用
StartsWith,为什么要选择空项? -
你确定 a.Atrributes["href"] 不为空吗?我建议在从中获取 Value 之前进行空检查。在尝试访问 linq 语句中的值之前,您总是希望进行空检查
-
您能否包含堆栈跟踪,以便我们准确查看该错误的来源?
-
等等。如果
href为空,则StartsWith将返回false。我猜你的问题出在其他地方。 -
您已经选择了
//a[@href],它应该排除没有 href 属性的任何内容。它不排除属性的空值,但给出的答案就是这样做!
标签: c# linq linq-to-xml html-agility-pack