2012-05-06 6 views
0

Я хочу, чтобы InnerText из div назывался album_notes. Как я делал во многих других местах, мой код выглядит следующим образом:HTMLAgilityPack Expression не может содержать лямбда-выражения

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

Объект TextBlock, lblNotes, заканчивается без текста в качестве результата. Если я открываю QuickWatch в режиме отладки, я получаю следующий результат:

Выражение не может содержать лямбда-выражения

, даже если я использовал тот же синтаксис, по крайней мере, еще 10 раз в других странах то же приложение. Странно, что на самом деле это не вызывает ошибку или что-то еще, она просто заполняет TextBlock пустой строкой.

Что случилось с моим кодом?

ответ

1

Сообщение Expression cannot contain lambda expressions не из HTMLAgilityPack, а из функции QuickWatch. В принципе, выражение лямбда - это просто синтаксический сахар: при компиляции лямбда преобразуется в «реальную» функцию. Поскольку это происходит во время компиляции, вы не можете создать новую лямбду во время выполнения (то есть в окне QuickWatch).

Теперь возникает вопрос: почему lblNotes.Text пуст? К сожалению, я не могу знать, не видя кода HTML. Хотя, если нет ошибки, это означает, что div «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; 
} 

Таким образом, если вы поставите точку останова на последней строке, вы можете проверить значение div и div.InnerHtml в окне quickwatch.

+0

Хотя вы не дали мне прямой ответ, ваша информация помогла мне отладить, особенно вопрос о преобразовании лямбда. Проблема в том, что я получал неправильный тег HTML с сайта. Мне нужен текст, где мой комментарий здесь: http://pastebin.ca/2144804 –

Смежные вопросы