在c#中使用. tolist (). foreach()时出现Null异常
本文关键字:Null 异常 foreach tolist | 更新日期: 2023-09-27 18:18:02
我正在使用htmllagilitypack来解析一些数据,并编写像下面这样的语句来删除不需要的内容-
doc.DocumentNode.SelectNodes("//ul").ToList().ForEach(a => a.Remove());
当HTML文档中存在<ul>
元素时,此方法可以很好地工作。然而,如果没有<ul>
元素,我得到一个值不能null异常时,将其转换为。tolist()。
我不想使用以下-
doc.DocumentNode.SelectNodes("//ul")== null ? null : doc.DocumentNode.SelectNodes("//ul").ToList().ForEach(a => a.Remove());
我有什么优雅的替代方案?
在您的示例中,您调用doc.DocumentNode.SelectNodes("//ul")
两次。
var nodes = doc.DocumentNode.SelectNodes("//ul");
if(nodes != null)
nodes.ToList().ForEach(a => a.Remove());
如果你有c# 6可用,你可以使用Null Conditional Operator
:
doc.DocumentNode.SelectNodes("//ul")?.ToList().ForEach(a => a.Remove());
我会使用RemoveAll
而不是ForEach(如果你可以使用c# 6):
doc.DocumentNode.SelectNodes("//ul")?.ToList().RemoveAll();
或
var nodes = doc.DocumentNode.SelectNodes("//ul");
if(nodes != null)
nodes.ToList().RemoveAll();
您需要检查null
条件
var docNodes = doc.DocumentNode.SelectNodes("//ul");
if(docNodes != null)
docNodes .ToList().ForEach(a => a.Remove());