C# HtmlAlityPack IEnumerable节点?
我如何使这更好,因为这个代码工作,但是癌症C# HtmlAlityPack IEnumerable节点?,c#,html-agility-pack,C#,Html Agility Pack,我如何使这更好,因为这个代码工作,但是癌症 请让我明白 首先,我将该方法更改为接受IEnumerable而不是通用IEnumerable。这可能需要也可能不需要在调用端进行更改,但它会阻止您的方法被调用,例如,使用整数数组 然后,可以使用LINQsSkip和FirstOrDefault来摆脱循环。如果可枚举项没有包含足够的元素,则后者返回null string dadada(IEnumerable _elements) { int i = 0; string link = "nu
请让我明白 首先,我将该方法更改为接受
IEnumerable
而不是通用IEnumerable。这可能需要也可能不需要在调用端进行更改,但它会阻止您的方法被调用,例如,使用整数数组
然后,可以使用LINQsSkip
和FirstOrDefault
来摆脱循环。如果可枚举项没有包含足够的元素,则后者返回null
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;
}
字符串数据(IEnumerable\u元素)
{
HtmlNode节点=_elements.Skip(1).FirstOrDefault();
return node==null?“null”:node.SelectSingleNode(“a”)。属性[0]。值;
}
将其更改为:
string dadada(IEnumerable<HtmlNode> _elements)
{
HtmlNode node = _elements.Skip(1).FirstOrDefault();
return node == null ? "null" : node.SelectSingleNode("a").Attributes[0].Value;
}
这是当i==2时!很抱歉这是当i==2时!对不起@安德鲁:只需在第一个默认值之前使用
Skip(1)
。
string dadada(IEnumerable _elements)
{
string link = "null";
if(_elements.Count() > 1)
{
link = ((HtmlNode)_elements.Skip(1).First()).SelectSingleNode("a").Attributes[0].Value;
}
return link;
}