string dadada(IEnumerable _elements)
{
int i = 0;
string link = "null";
foreach (HtmlNode node in _elements)
{
i++;
if (i == 2)
{
link = node.SelectSingleNode("a").Attributes[0].Value;
}
}
return link;
}
我如何做得更好,因为这段代码有效,但是癌症!
请让我理解!
答案 0 :(得分:1)
首先,我将方法更改为接受IEnumerable<HtmlNode>
而不是通用的IEnumerable。这可能需要也可能不需要在调用端进行更改,但它会阻止调用您的方法,例如,使用整数数组。
然后,您可以使用LINQ Skip
和FirstOrDefault
来摆脱循环。如果可枚举的元素不足,则后者返回null
。
string dadada(IEnumerable<HtmlNode> _elements)
{
HtmlNode node = _elements.Skip(1).FirstOrDefault();
return node == null ? "null" : node.SelectSingleNode("a").Attributes[0].Value;
}
答案 1 :(得分:0)
将其更改为:
string dadada(IEnumerable _elements)
{
string link = "null";
if(_elements.Count() > 1)
{
link = ((HtmlNode)_elements.Skip(1).First()).SelectSingleNode("a").Attributes[0].Value;
}
return link;
}