HTMLAgilityPack 표현식에는 람다식이 포함될 수 없습니다.

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

문제

앨범 _ 노트라는 div의 InnerText를 원합니다. 내가 다른 많은 장소에서했던 것처럼, 나의 코드는 다음과 같다 :

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을 채 웁니다.

내 코드에 무슨 문제가 있습니까?

수락 된 답변

Expression cannot contain lambda expressions 메시지는 HTMLAgilityPack에서 가져 오지 않고 QuickWatch 기능에서 가져옵니다. 기본적으로 람다 식은 문법적인 설탕에 불과합니다. 편집시 람다는 '실제'함수로 변환됩니다. 컴파일하는 동안 일어나는 일이기 때문에 런타임에 (즉, QuickWatch 윈도우에서) 새로운 람다를 생성 할 수 없습니다.

이제 질문은 : lblNotes.Text 비어있는 이유는 무엇입니까? 불행히도 HTML 코드를 보지 않고서도 알 수 없습니다. 그러나 오류가 없다면 "album_notes"div가 발견되었음을 의미합니다 (그렇지 않으면 null 참조 예외가 발생합니다). 따라서 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;
}

이렇게하면 마지막 줄에 중단 점을 넣으면 빠른보기 창에서 divdiv.InnerHtml 의 값을 확인할 수 있습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.