Foreach循环,确定哪个是循环的最后一次迭代-DataRow

时间:2019-03-17 17:44:20

标签: c# foreach

请查看此link
现在我有一个这样的foreach:

context

我想确定foreach循环的最后一次迭代。
所以我尝试了这个:

init()

但是我有这个错误:

  

错误CS1061“ DataRowCollection”不包含以下内容的定义:   “ Last”,没有扩展方法“ Last”接受第一个参数   可以找到类型“ DataRowCollection”(您是否缺少使用   指令还是程序集引用?)

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您只需编写

 DataRow last = dsRequests.Tables["Requests"].AsEnumerable().LastOrDefault();
 if(last != null)
     .....

强制将 DataTable 枚举,然后可以使用 LastOrDefault()。请注意,我使用的是 LastOrDefault ,因为如果表为空,则 Last()会为您带来异常。

另一种方法是通过 Rows 集合上的老式索引

    DataRow last = null;
    int idx = dsRequests.Tables["Requests"].Rows.Count;
    if(idx > 0) last = dsRequests.Tables["Requests"].Rows[idx -1];
    if(last != null)
        ....

在此示例中,您必须在获得计数后测试行数。

我还应该补充一点,使用索引访问最后一行的最后一个示例性能更高。但是,我的测试表明,在100000个循环中,相差仅40毫秒。不用担心。