C#如何获得上次在foreach语句?
可能重复:
Foreach循环,确定哪个是循环的最后一次迭代
foreach (DataRowView row in orderedTable.DefaultView)
{
if(lasttime) do-something;
}
orderedtable是一个数据表
有谁知道如何找出我们是否在最后的foreach迭代? 请记住,我确实有重复的顺序表
foreach
构造不知道这样的事情,因为它同样适用于无界列表。 它无法知道什么是最后一项。
不过,您也可以重复手动方式:
for (int i = 0; i < orderedTable.DefaultView.Count; i++) {
DataRowView row = orderedTable.DefaultView[i];
if (i == orderedTable.DefaulView.Count - 1) {
// dosomething
}
}
适用于所有情况的正确方法是直接使用IEnumerator<T>
:
using (var enumerator = orderedTable.DefaultView.GetEnumerator())
{
if (enumerator.MoveNext())
{
bool isLast;
do
{
var current = enumerator.Current;
isLast = !enumerator.MoveNext();
//Do stuff here
} while (!isLast);
}
}
即使您的集合没有Count
属性,并且即使它的确如此,但如果Count
属性较慢,此方法也会更有效。
另一种方法,我不认为有人发布。 如果您提前不知道计数,这很有效。
DataRowView lastRow;
foreach (DataRowView row in orderedTable.DefaultView)
{
// Do something...
lastRow = row;
}
if (lastRow != null)
{
// Do something with last row
}
链接地址: http://www.djcxy.com/p/52981.html