HTMLAgilityPack表达式不能包含lambda表达式(HTMLAgilityPack Ex

2019-06-24 05:31发布

我想的div的innerText称为album_notes。 正如我在其他许多地方一样,我的代码如下:

public void Album_Notes(HtmlAgilityPack.HtmlDocument bandHTML)
{
        this.lblNotes.Text = bandHTML.DocumentNode.Descendants("div").First(x => x.Id == "album_notes").InnerHtml;

TextBlock的,lblNotes,没有文字的结果结束。 如果我打开快速监视,而在调试模式下,我得到以下结果:

表达式不能包含lambda表达式

即使我已经使用了完全相同的语法等至少10倍于其他地方相同的应用程序。 奇怪的是,它实际上并没有引发错误或任何东西,它只是填充一个空字符串TextBlock的。

这有什么错我的代码?

Answer 1:

Expression cannot contain lambda expressions消息没有来自HTMLAgilityPack而是从快速监视功能。 基本上,lambda表达式仅仅是一个syntaxic糖:在编译时拉姆达被转换为“真实的”的功能。 因为它的东西在编译期间发生的事情,你不能在运行时创建一个全新的拉姆达(即,在快速监视窗口)。

现在的问题是:为什么是lblNotes.Text空? 不幸的是,我不知道没有看到的HTML代码。 不过,如果没有错误,这意味着“album_notes”分区已被发现(否则你将有一个空引用除外)。 因此, InnerHtml财产可能是空的。

您可以检查通过重写代码了一下:

public void Album_Notes(HtmlAgilityPack.HtmlDocument bandHTML)
{
    var div = bandHTML.DocumentNode.Descendants("div").First(x => x.Id == "album_notes");
    this.lblNotes.Text = div.InnerHtml;
}

这样一来,如果你把一个断点就上线,你可以检查的价值divdiv.InnerHtml在快速监视窗口。



文章来源: HTMLAgilityPack Expression cannot contain lambda expressions