谢谢!
foreach (var row in rows)
{
var items = row.ChildNodes.Where(y => y.Name.Equals("td"));
List<string> entries = new List<string>();
foreach (var item in items)
{
entries.Add(item.InnerText);
}
//This is executed before the foreach loop has iterated through all the items?
Debug.WriteLine(entries.ElementAt(0));
}
答案 0 :(得分:3)
在foreach语句之前调用...当WriteLine
时会导致System.ArgumentOutOfRangeException
不,这不会导致异常。如果在空集合上使用Enumerable.ElementAt
,则会引发此异常。这也解释了为什么foreach
循环被“跳过”。
顺便说一下,你可以简化代码:
ArgumentOutOfRangeException
:index小于0或大于或 等于源中元素的数量。
var entries = row.ChildNodes
.Where(item => item.Name.Equals("td"))
.Select(item => item.InnerText)
.ToList();
答案 1 :(得分:1)
这意味着
var items = row.ChildNodes.Where(y => y.Name.Equals("td"));
是空的。
foreach(项目中的var项目)执行但什么都不做。