簡體   English   中英

Foreach循環,確定哪個是循環的最后一次迭代-DataRow

[英]Foreach loop, determine which is the last iteration of the loop - DataRow

請看一下這個鏈接
現在我有一個這樣的foreach:

//DataRow last = dsRequests.Tables["Requests"].Rows.Last();

foreach (DataRow drRequests in dsRequests.Tables["Requests"].Rows)
{
}

我想確定foreach循環的最后一次迭代。
所以我嘗試了這個:

DataRow last = dsRequests.Tables["Requests"].Rows.Last();

但是我有這個錯誤:

錯誤CS1061'DataRowCollection'不包含'Last'的定義,並且找不到擴展方法'Last'接受類型為'DataRowCollection'的第一個參數(您是否缺少using指令或程序集引用?)

我怎樣才能做到這一點?

你可以簡單地寫

 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毫秒。 完全不用擔心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM