HTMLAgilityPack Expression no puede contener expresiones lambda

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

Pregunta

Quiero el InnerText de la div llamado album_notes. Como lo hice en muchos otros lugares, mi código es el siguiente:

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

El TextBlock, lblNotes, termina sin texto como resultado. Si abro el QuickWatch mientras estoy en modo de depuración, obtengo el siguiente resultado:

La expresión no puede contener expresiones lambda

aunque he usado la misma sintaxis al menos otras 10 veces en la misma aplicación. Lo extraño es que en realidad no arroja un error ni nada, simplemente llena el TextBlock con una cadena vacía.

¿Qué pasa con mi código?

Respuesta aceptada

La Expression cannot contain lambda expressions mensaje de Expression cannot contain lambda expressions no proviene del HTMLAgilityPack sino de la función QuickWatch. Básicamente, una expresión lambda es simplemente un azúcar sintáctico: en la compilación, la lambda se convierte en una función "real". Ya que sucede algo durante la compilación, no se puede crear un nuevo lambda en tiempo de ejecución (es decir, en la ventana de QuickWatch).

Ahora la pregunta es: ¿por qué lblNotes.Text está vacío? Desafortunadamente, no puedo saber sin ver el código HTML. Sin embargo, si no hay ningún error, significa que se ha encontrado el div "album_notes" (de lo contrario tendría una excepción de referencia nula). Por lo tanto, la propiedad InnerHtml probablemente esté vacía.

Puedes verificarlo reescribiendo un poco tu código:

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

De esta manera, si coloca un punto de interrupción en la última línea, puede verificar el valor de div y div.InnerHtml en la ventana de observación rápida.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué