我正在开发一个从网站上检索一些数据的项目。为了完成这项工作,我决定使用HtmlAgilityPack。
除了与lambda表达式相关的问题外,一切正常。我收到的错误是
无法隐式转换类型 ' System.Collections.Generic.IEnumerable' 到了布尔'
var page = RetrievePage(url); //retrieve page
var document = GetDocument(page); //get the document
var optionNodes = document.Result.DocumentNode.SelectNodes("???"); //Select nodes based on selector
//remove empty lines
var filteredNodes = optionNodes[0].ChildNodes.Where(n => n.InnerText.Trim() != string.Empty);
using (var nodes = filteredNodes.GetEnumerator())
{
while (nodes.MoveNext())
{
//error
var children = nodes.Current.ChildNodes.Where(c => c.Attributes.Where(t => t.Value == "???"));
}
}
感谢您的帮助。
答案 0 :(得分:5)
内部将返回行。外部where只能是一个具有布尔值的表达式。所以你必须改变这个:
var children = nodes.Current.ChildNodes
.Where(c => c.Attributes.Where(t => t.Value == "???"));
对此:
var children = nodes.Current.ChildNodes
.Where(c => c.Attributes.Any(t => t.Value == "???"));
或者这个:
var children = nodes.Current.ChildNodes
.Where(c => c.Attributes.All(t => t.Value == "???"));
或者这个:
var children = nodes.Current.ChildNodes
.Where(c => c.Attributes.Where(t => t.Value == "???").Count()>0);
参考: