0

当行数不可预测时,如何对特定表的特定列中的值求和?请注意,标题行包含文本并使用“”而不是“”。

使用下面的示例 html,我想对第一个表的第四列的值求和,并忽略所有其他表。

我假设第一步是获取第一个表中的行数,下一步是构建一个忽略第一行执行求和的计算。

示例 HTML;

<html>
<head>
<title>Tables</title>
</head>
<body>
<table border="1">
  <tr>
    <td>Name</td>
    <td>Phone</td>
    <td>City</td>
    <td>Number</td>
  </tr>
  <tr>
    <td>Scott</td>
    <td>555-2345</td>
    <td>Chicago</td>
    <td>42</td>
  </tr>
  <tr>
    <td>Bill</td>
    <td>555-1243</td>
    <td>Detroit</td>
    <td>23</td>
  </tr>
  <tr>
    <td>Ted</td>
    <td>555-3567</td>
    <td>Columbus</td>
    <td>9</td>
  </tr>
</table>
<p></p>
<table border="1">
  <tr>
    <td>Name</td>
    <td>Year</td>
  </tr>
  <tr>
    <td>Abraham</td>
    <td>1865</td>
  </tr>
  <tr>
    <td>Martin</td>
    <td>1968</td>
  </tr>
  <tr>
    <td>John</td>
    <td>1963</td>
  </tr>
</table>
<p></p>
</body>
</html>

这里参考了我用于其他目的的代码 - (获取表数)。

namespace ConsoleApplication2
{
class Program
{
    static void Main(string[] args)
    {
        String html = "C:/TestFile.html";

        HtmlDocument doc = new HtmlDocument();
        doc.Load(html);

        int count = doc.DocumentNode.SelectNodes("//table").Count;

        // output to Console
        Console.WriteLine(count.ToString());
        Console.ReadLine();
    }
}
}

谢谢!

还有一件事...您是否可以建议一些资源来帮助我理解语法,以便我获得一点独立性。(我是 HTML-Agility Pack 的新手,几年前我使用过 C#)

我有 HAP 1.4.6 的 CHM 文件,我尝试在 Visual Studio 的对象浏览器中导航 HtmlAgilityPack,但我不明白我在那里看到的内容。请指导我一些可以帮助我入门的资源。我将不胜感激对我正在尝试做的事情有更多的线索。

也谢谢你!

4

1 回答 1

1

如果我理解正确,您需要第一个表的最后一列(跳过第一行)的总和。

 var sum = doc.DocumentNode.SelectSingleNode("//table")
              .Elements("tr")
              .Skip(1)
              .Sum(tr => int.Parse(tr.Elements("td").Last().InnerText));

这返回74

于 2013-05-06T20:20:44.260 回答