1

私は基本的にhtmlagilitypackを使用してhtmlの一部を解析し、linqを使用してそれをオブジェクトに入れて他のコードで使用しようとしています。以下の2つのコードスニペットがあります。#1はlinqを使用して機能しませんが、#2はforループを使用して機能します。

linqの使用法を除いて、2つのコードはほぼ同じです。その意味で、私はそれを機能させるのを妨げる何かをlinqで見逃したと思いますか?

誰かが私が見るのを手伝ってくれるかどうか感謝します

  1. linqを使用します-動作しません。resはnullになります

    res = from li in ul.Elements("li").Where(i => GetClass(i) != "titles-h")
    select new Post()
    {
        title = li.Element("h2").InnerText,
        // ....
    };
    
  2. linqなし-動作します

    foreach (var li in ul.Elements("li"))
    {
        if (GetClass(li) != "titles-h")
            ress.Add(new Post()
              {
                  title = li.Element("h2").InnerText,
                 // ....
              });
    }
    

GetClassの実装

static string GetClass(HtmlNode n)
{
    if (n.Attributes["class"] != null)
        return n.Attributes["class"].Value;
    else
        return "";
}
4

0 に答える 0