首页 > 解决方案 > 在 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 })

标签: c#lambdahtml-agility-pack

解决方案


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;
    }
}

这对我来说看起来更易于维护。


推荐阅读