2016-09-22 25 views
0

我需要知道如何停止foreach在它的最後一次迭代。我不知道爲什麼,但它是一次迭代超過需要。如何foreach不跑最後一步 - ASP.NET C#

以下是代碼。

var rslista = result.Tables[0]; 
foreach (DataRow row in rslista.Rows) 
{ 
} 
+1

它將遍歷數據表中存在的每一行,而不是更多。您可能會在數據表中填充空行。我相信你的問題是你的數據加載到你的數據表或處理你的數據表中的空值 – techspider

+0

我不能完全知道你使用的數據結構,因爲你有'var'而不是顯式類型,但是你可以檢查最後一個變量的地址是否等於'row'的當前值並且只是'break'循環。 – Cody

+0

你可以嘗試像'foreach(DataRow row in rslista.Rows.Cast ().Skip(rslista.Rows.Count - 1))' – Hackerman

回答

0

設置斷點您的foreach循環內部,看看正被循環的實際行了,你覺得不應該在那裏。

有時會在數據表中預設一個新的對象。跳過這種行的一種可能的方法是檢查行狀態或檢查期望數據所在列的空值。可以使用continue命令跳過該行。

不要複製和粘貼此代碼,而是分析您的數據是什麼,並確定下面的一個概念是否可以幫助您。

DataTable dt = new DataTable(); 

foreach (DataRow dr in dt.Rows) 
{ 
    if (dr.RowState == DataRowState.Added) 
     continue; 

    if (dr.RowState == DataRowState.Detached) 
     continue; 


}