连接两个 SelectNodes htmlagilitypack

Concat two SelectNodes htmlagilitypack

我的模特:

public class Event
{
    public string DateOfEvent { get; set; }
    public string Teams { get; set; }
    public string Championship { get; set; }
}

我使用此代码从 table 解析的 DateOfEvent 和 Teams:

var matches = currentData.DocumentNode.SelectNodes("//tr[@class=' event-header']").
              Select(tr => new Event()
              {
                   DateOfEvent =
                    tr.SelectNodes("./td[1]/table/tr[1]/td[2]//text()[normalize-space()]")
                           .Single()
                           .InnerText.Trim(),
                   Teams = tr.SelectNodes("./td[1]/table/tr[1]/td[3]//text()[normalize-space()]")
                           .Single()
                           .InnerText.Trim(),
               });

我有很多关于 DateOfEvent 和 Teams 的记录。但我需要添加到这些所有记录领域冠军,但它的领域解析不是来自 table。

var b = currentData.DocumentNode.SelectNode("//div[@class ='sport-champ']")
                                .Select(p=> new Event()
                  {
                      Championship = ......
                  });

我该怎么做?

如果我理解正确,您想要 select 一组具有 DateOfEventTeamsChampionship 属性的 Event 对象。 DateOfEventTeams 来自多行,但是有一个 Championship 并且每一行都一样吗?

那样的话,就先得到Championship

var championship = currentData.DocumentNode.SelectNode("//div[@class ='sport-champ']")
    .InnerText.Trim();

然后从以下行开始 Select

var matches = currentData.DocumentNode.SelectNodes("//tr[@class=' event-header']").
    Select(tr => new Event()
    {
        DateOfEvent = tr.SelectNodes("./td[1]/table/tr[1]/td[2]//text()[normalize-space()]")
           .Single()
           .InnerText.Trim(),
       Teams = tr.SelectNodes("./td[1]/table/tr[1]/td[3]//text()[normalize-space()]")
           .Single()
          .InnerText.Trim(),
       Championship = championship
     });