使用Enumerable.Where键入错误

Nab*_*egh 0 c# lambda html-agility-pack

我正在开发一个从网站上检索一些数据的项目.为了完成这项工作,我决定使用HtmlAgilityPack.

一切正常,除了我面临的与lambda表达式相关的问题.我收到的错误是

无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'bool'

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 == "???"));
   }
}
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助.

Ari*_*ion 5

内部将返回行.外部where只能是一个具有布尔值的表达式.所以你必须改变这个:

var children = nodes.Current.ChildNodes
               .Where(c => c.Attributes.Where(t => t.Value == "???"));
Run Code Online (Sandbox Code Playgroud)

对此:

var children = nodes.Current.ChildNodes
              .Where(c => c.Attributes.Any(t => t.Value == "???"));
Run Code Online (Sandbox Code Playgroud)

或这个:

var children = nodes.Current.ChildNodes
               .Where(c => c.Attributes.All(t => t.Value == "???"));
Run Code Online (Sandbox Code Playgroud)

或这个:

var children = nodes.Current.ChildNodes
               .Where(c => c.Attributes.Where(t => t.Value == "???").Count()>0);
Run Code Online (Sandbox Code Playgroud)

参考: