2016-02-21 23 views
0

我很抱歉,因为我仍然在学习LINQ和HtmlAgilityPack的进程访问值(),但我想指定标题和链接已经创建的字符串值。换句话说,我如何访问这个.ToList()的值?如何到LINQ .ToList内使用HtmlAgilityPack

下面是我的代码:

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功能。当我打印的元素[0]我得到这样的两个值,请{link = www.link.url,标题=有些标题}

回答

2
imgTitle = elements[0].Title; 

基本上当你做

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

} 

要创建具有2个属性的匿名对象。

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

elements[0]给你的第一个对象。你还可以用elements[0].Linkelements[0].Title访问2个属性

+0

谢谢我爱你! – Ammar

1

你真正拥有的元素是anonymous type有两个属性的列表,这样你就可以访问到Title如下:

imgTitle = elements[0].Title;