2012-06-11 60 views
0

我是使用C#和數據庫的新手。C#循環訪問DataTable,與上一行或下一行進行比較

當我迭代時,我需要迭代Datatable(包含在數據集中),我可能需要將當前行的值與前一行或下一行的值進行比較。

我目前迭代這樣的:

foreach(DataRow dr in ds.Tables["Invoices"].Rows) 
{ 
    //Check if invoice id is equal to invoice id from previous/next row 

} 

一個我能想到的辦法是保持「上一個」變量來存儲舊值和比較和更新作爲走,但我想看看是否DataTable提供了任何內置選項。

感謝, 卡爾文

+1

你確實在試圖找到重複的東西嗎? –

+0

從某種意義上說,源數據有點奇怪,屬於一個對象的多行數據。我已經通過ID對數據進行了排序,所以我知道何時開始新記錄。所以我需要繼續檢查當前的ID是否已經改變。 –

回答

5
for(int i = 0; i < ds.Tables["Invoices"].Rows.Count; i++) 
{ 
    if(i > 0) 
    { 
     // Compare with previous row using index 
     if(ds.Tables["Invoices"].Rows[i]["Amount"] > ds.Tables["Invoices"].Rows[i - 1]["Amount"]) 
     {} 
    } 
    if(i < ds.Tables["Invoices"].Rows.Count - 1) 
    { 
     if(ds.Tables["Invoices"].Rows[i]["Amount"] > ds.Tables["Invoices"].Rows[i + 1]["Amount"]) 
     {} 
    } 
} 
+1

謝謝。我想我可以在此基礎上使用它來解決我的問題。 –

1

如果您需要隨機存取,不使用foreach,而是一個純老unhip for循環使用索引。

相關問題