如何用Lambda表达式实现HTML Agility Pack加载HtmlDocument列表
用Lambda表达式改写HTML Agility Pack的HtmlDocument列表初始化代码
你原来通过循环逐个创建HtmlDocument实例并加载HTML内容的逻辑,其实可以用LINQ的Select配合Lambda表达式来简化。你之前尝试的写法不对,是因为HtmlDocument并没有可以直接赋值的Text属性,得调用它的LoadHtml方法来加载内容。
正确的改写代码是这样的:
var htmllist = content.Select(c => { var doc = new HtmlDocument(); doc.LoadHtml(c); return doc; }).ToList();
简单解释下:这里用了带语句体的Lambda表达式,因为我们需要执行多步操作——先创建HtmlDocument实例,再调用LoadHtml加载传入的内容,最后把这个实例返回。最后调用ToList()把Select返回的IEnumerable<HtmlDocument>转换成List<HtmlDocument>,和你原来的循环实现的效果完全一致。
内容的提问来源于stack exchange,提问作者user8608110
相关产品推荐
相关产品推荐

