-5

我有一个带有 tr 字符串(html 表格行)的列表,每个 tr 有 3 个 td。

我正在使用 HtmlAgilityPack 从网页中过滤掉数据。

var data= from tr in content.ChildNodes.Where(c =>c.Name.Equals("tr"))                    
         select tr;

<tr><td></td><td>aaa</td><td></td></tr>
<tr><td></td><td>bbb</td><td></td></tr>
<tr><td></td><td>aaa</td><td></td></tr>
<tr><td></td><td>aaa</td><td></td></tr>

……

我想获取按 td[2] 分组的所有值,即:aaa、bbb

谢谢。

更新:data.GroupBy(tr => tr.ChildNodes.Where(e => e.Name == "td") .Skip(1).First().InnerText); 工作正常

谢谢大家。

4

2 回答 2

2

尝试:

data.GroupBy(tr => tr.ChildNodes
                     .Where(e => e.Name == "td")
                     .Skip(1).First().Value));

当然,这假设td每个tr. 如果没有,那么您还必须在Skip(1).First()调用中进行一些空值检查。

于 2013-05-27T14:52:28.483 回答
0

这应该将 TD 值保存到集合中。

var entries = from td in data.DocumentNode.SelectNodes("//td").Where(node => node.InnerHtml != string.Empty) select td.InnerHtml;
于 2013-05-27T14:59:48.130 回答