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

上一篇: c# how to get last time in foreach statement?

下一篇: C# newbie: find out the index in a foreach block