【发布时间】:2013-03-06 04:09:20
【问题描述】:
我有以下 LINQ 在 HTMLAgilityPack 的帮助下从 html <tr> 标签填充数据表,每个标签都有一个属性,如果属性值为“rating-”,我需要忽略该标签的 innertext科尔”。
nodes.Skip(1)
.Select(
tr => tr.Elements("td").
Select(td => td.InnerText.
Where(td.Attributes[0].Value != "rating-col")).
ToArray()).
ToList().
ForEach(row => dt.Rows.Add(row));
没有 Where 子句一切正常,我在 Where 子句中做错了什么?
【问题讨论】:
-
如果可以,请编辑并添加您的异常或错误。
-
不清楚您是要跳过每一行中的一列,还是跳过表格中的某些行。
-
Where(td=> td.Attributes[0].Value != "rating-col"))
-
@DotNetDreamer:OP 不能使用
td。它是一个内部Where,将重新定义td。 -
"每个标签都有一个属性..." 这似乎是一个非常脆弱的测试:您依赖于属性的确切数量/位置来使您的逻辑工作。为什么不使用特定的命名属性,而直接定位它呢?如果这不在您的控制范围内,那么您可能应该在所有属性中查找“rating-col”(如果需要这样做),以防添加其他属性。
标签: c# linq html-agility-pack