Der HTMLAgilityPack-Ausdruck darf keine Lambda-Ausdrücke enthalten

c# html-agility-pack lambda windows-phone-7

Frage

Ich möchte den InnerText des div namens album_notes. Wie an vielen anderen Orten ist mein Code wie folgt:

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

Der TextBlock, lblNotes, endet mit keinem Text als Ergebnis. Wenn ich die QuickWatch im Debug-Modus öffne, bekomme ich folgendes Ergebnis:

Der Ausdruck darf keine Lambda-Ausdrücke enthalten

obwohl ich die gleiche Syntax mindestens 10 andere Male in der gleichen App verwendet habe. Die seltsame Sache ist, dass es tatsächlich keinen Fehler oder irgendetwas wirft, es füllt nur den TextBlock mit einer leeren Schnur.

Was ist falsch an meinem Code?

Akzeptierte Antwort

Der Expression cannot contain lambda expressions Nachricht stammt nicht vom HTMLAgilityPack, sondern von der QuickWatch-Funktion. Im Grunde ist ein Lambda-Ausdruck nur ein Syntaxzucker: Nach der Kompilierung wird das Lambda in eine "echte" Funktion umgewandelt. Da beim Kompilieren etwas passiert, können Sie zur Laufzeit (also im QuickWatch-Fenster) kein brandneues Lambda erstellen.

Jetzt ist die Frage: Warum ist lblNotes.Text leer? Leider kann ich es nicht wissen, ohne den HTML-Code zu sehen. Wenn jedoch kein Fehler vorliegt, bedeutet dies, dass das div "album_notes" gefunden wurde (andernfalls hätten Sie eine Null-Referenz-Ausnahme). Daher ist die InnerHtml Eigenschaft wahrscheinlich leer.

Sie können das überprüfen, indem Sie Ihren Code ein wenig umschreiben:

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

Auf diese Weise können Sie, wenn Sie einen Haltepunkt in der letzten Zeile setzen, den Wert von div und div.InnerHtml im Quickwatch-Fenster überprüfen.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum