c#如何在foreach声明中获取最后一次?

JOE*_*EET 7 .net c#

可能重复:
Foreach循环,确定哪个是循环的最后一次迭代

foreach (DataRowView row in orderedTable.DefaultView)
{
    if(lasttime) do-something;
}
Run Code Online (Sandbox Code Playgroud)

orderedtable是一个数据表

有谁知道如何找出我们是否在最后的foreach迭代?请记住,我确实在ordertable中有重复

Meh*_*dad 17

适用于所有情况的正确方法是直接使用: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);
    }
}
Run Code Online (Sandbox Code Playgroud)

即使您的集合没有Count属性,此方法也可以工作,即使存在属性,如果Count属性较慢,此方法也会更有效.


Joe*_*oey 7

foreach构造不知道这样的事情,因为它同样适用于无界列表.它无法知道什么是最后一项.

您也可以迭代手动方式:

for (int i = 0; i < orderedTable.DefaultView.Count; i++) {
    DataRowView row = orderedTable.DefaultView[i];
    if (i == orderedTable.DefaulView.Count - 1) {
        // dosomething
    }
}
Run Code Online (Sandbox Code Playgroud)