HTMLAgilityPack Expression non può contenere espressioni lambda

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

Domanda

Voglio il InnerText del div chiamato album_notes. Come ho fatto in molti altri posti, il mio codice è il seguente:

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

Il TextBlock, lblNotes, non ha come risultato il testo. Se apro QuickWatch in modalità di debug, ottengo il seguente risultato:

L'espressione non può contenere espressioni lambda

anche se ho usato esattamente la stessa sintassi almeno altre 10 volte nella stessa app. La cosa strana è che in realtà non lancia un errore o altro, semplicemente riempie il TextBlock con una stringa vuota.

Cosa c'è che non va nel mio codice?

Risposta accettata

L' Expression cannot contain lambda expressions messaggio non proviene da HTMLAgilityPack ma dalla funzione QuickWatch. Fondamentalmente, un'espressione lambda è solo uno zucchero sintattico: una volta compilata, la lambda viene convertita in una funzione 'reale'. Poiché si verifica qualcosa durante la compilazione, non è possibile creare un lambda nuovo di zecca in fase di runtime (ovvero nella finestra di QuickWatch).

Ora la domanda è: perché lblNotes.Text è vuoto? Sfortunatamente, non posso sapere senza vedere il codice HTML. Tuttavia, se non ci sono errori, significa che è stato trovato il div "album_notes" (altrimenti avresti un'eccezione di riferimento null). Pertanto, la proprietà InnerHtml è probabilmente vuota.

Puoi verificarlo riscrivendo un po 'il tuo codice:

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

In questo modo, se inserisci un breakpoint sull'ultima riga, puoi controllare il valore di div e div.InnerHtml nella finestra di quickwatch.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché