L'expression HTMLAgilityPack ne peut pas contenir d'expressions lambda

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

Question

Je veux le InnerText de la div appelé album_notes. Comme dans beaucoup d'autres endroits, mon code est le suivant:

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

Le TextBlock, lblNotes, finit avec aucun texte. Si j'ouvre le QuickWatch en mode débogage, j'obtiens le résultat suivant:

L'expression ne peut pas contenir d'expressions lambda

même si j'ai utilisé la même syntaxe exacte au moins 10 autres fois ailleurs dans la même application. Ce qui est étrange, c’est qu’il ne génère pas d’erreur ou quoi que ce soit, il remplit simplement le TextBlock avec une chaîne vide.

Qu'est ce qui ne va pas avec mon code?

Réponse acceptée

L' Expression cannot contain lambda expressions message ne provient pas de HTMLAgilityPack mais de la fonctionnalité QuickWatch. Fondamentalement, une expression lambda est juste un sucre syntaxique: lors de la compilation, le lambda est converti en une fonction «réelle». Comme il se passe quelque chose pendant la compilation, vous ne pouvez pas créer un nouveau lambda au moment de l'exécution (c'est-à-dire dans la fenêtre QuickWatch).

Maintenant la question est: pourquoi lblNotes.Text est- lblNotes.Text vide? Malheureusement, je ne peux pas savoir sans voir le code HTML. Cependant, s'il n'y a pas d'erreur, cela signifie que la div "album_notes" a été trouvée (sinon, vous auriez une exception de référence nulle). Par conséquent, la propriété InnerHtml est probablement vide.

Vous pouvez vérifier cela en réécrivant un peu votre code:

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

Ainsi, si vous placez un point d'arrêt sur la dernière ligne, vous pouvez vérifier la valeur de div et div.InnerHtml dans la fenêtre d'aperçu rapide.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi