c# - 在 Lambda 表达式中使用方法 - HTMLDoc
问题描述
我想使用 HTML Agility 包将内容加载到 htmlDocument 列表中。
我已经成功地实现了我想要使用的东西:
var htmllist = new List<HtmlDocument>();
int counter = 0;
foreach(var c in content)
{
htmllist.Add(new HtmlDocument());
htmllist[counter].LoadHtml(c);
counter += 1;
}
我怎样才能在 Lambda 表达式中写这个?我试过了:
var htmllist = content.Select(p => new HtmlDocument() {Text = p })
解决方案
Enumerable.Select
接受任意选择器作为Func<TSource,TResult>
. 所以你可以内联转换方法,但恕我直言,它看起来真的不太好……</p>
content.Select(c => {var doc = new HtmlDocument(); doc.LoadHtml(c); return doc;});
如果您使用的是 C# >=7.0,您可以考虑为此使用本地函数。例如
void Convert(IEnumerable<string> content)
{
var htmls = content.Select(ConvertToHtml);
HtmlDocument ConvertToHtml(string c)
{
var doc = new HtmlDocument();
doc.LoadHtml(c);
return doc;
}
}
这对我来说看起来更易于维护。
推荐阅读
- python - 如何修复 pip 安装程序安装的软件包的“__path__ 属性未找到”错误?
- c# - 如何在 Unity 中实现和使用低级键盘挂钩来禁用 Windows 快捷方式?
- c# - 如何使用c#从纬度和经度获取地址
- python - 在 Python 代码中获取语法错误的确切位置
- python - numpy.random.normal() 函数的最大和最小间隔是多少?
- c# - 需要帮助以在两者之间提取文本
23454
- python - 两只兔子见面
- mysql - MySQL INNER JOIN - 如何添加额外的 IF 语句?
- bootstrap-4 - Bootstrap 4.1 表单验证类在 Angular 7 中不起作用
- digital-ocean - 为什么 gitlab runner 不能在 3Gb Digital Ocean 服务器上运行作业?