[英]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.