2012-05-06 11 views
0

divのInnerTextをalbum_notesにします。私は他の多くの場所で行ったように、私のコードは次のとおりです。HTMLAgilityPack式にラムダ式を含めることはできません

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

のTextBlockは、lblNotesは、結果として、テキストなしで終了します。私はクイックウォッチを開くと、デバッグモードでは、私は以下の結果を得ながら:ラムダを含めることはできません

式は、私は、少なくとも他の10倍の別の場所でまったく同じ構文を使用したにも関わらず

を表現します同じアプリ。奇妙なことは、実際にはエラーや何もスローされないことです。空の文字列でTextBlockを塗りつぶすだけです。

私のコードで何が問題になっていますか?

答えて

1

Expression cannot contain lambda expressionsメッセージはHTMLAgilityPackからではなく、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の値を確認することができます。

+0

あなたが私に直接の回答を与えていないのに、あなたの情報が私にデバッグ、特にラムダ変換についてのポイントを教えてくれました。問題は、私がサイトから間違ったHTMLタグを取得していたことでした。私はここに私のコメントがあるテキストを欲しかった:http://pastebin.ca/2144804 –

関連する問題