如何使用 HtmlAgilityPack 访问 Linq .ToList() 中的值

How to access values within a Linq .ToList() using HtmlAgilityPack

我很抱歉,因为我仍在学习 Linq 和 HtmlAgilityPack,但我正在尝试将 Title 和 Link 分配给已创建的字符串值。换句话说,如何访问此 .ToList() 的值?

下面是我的代码:

string imgTitle;
string imgLink;

private void getCaption(string txt)
{

    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml("<html><head></head><body>" + txt + "</body></html>");
    if (htmlDoc != null)
    {
        var elements = htmlDoc.DocumentNode.SelectNodes(@"//img[@src]").Select(img => new
        {
            Link = img.Attributes["src"].Value,
            Title = img.Attributes["alt"].Value

        }).ToList();
    }
    imgTitle = elements[0]["Title"];  //I thought i could do this

抱歉提出了一个愚蠢的问题,但我还没有看到任何关于 Linq 工作原理和 ToList 函数的好的解释。当我打印 elements[0] 时,我得到了两个这样的值,{Link = www.link.url, Title = Some title}

imgTitle = elements[0].Title;

基本上当你

new
{
    Link = img.Attributes["src"].Value,
    Title = img.Attributes["alt"].Value

}

您正在创建一个具有 2 个属性的匿名对象。

列表是这个匿名对象的列表。

elements[0] 给你第一个对象。您可以使用 elements[0].Linkelements[0].Title

访问这两个属性

您在元素中真正拥有的是具有两个属性的 anonymous type 的列表,因此您可以按如下方式访问 Title

 imgTitle = elements[0].Title;