2014-01-13 61 views
0

我有一個包含某些列的數據表。我能夠在整個中繼器中顯示它們。但是,我想要做的是逐個顯示行。我想創建一個像下一個去顯示前一個按鈕。我做了類似以下內容:C#數據表一次只取一行

myDataTable.Rows.Cast<DataRow>().Take(1).CopyToDataTable(); 

這是給我的第一行。現在我該如何使用這個概念來獲得下一行(第2行),然後是第3行.....直到第n行。對於不同的情況,返回的行是不同的。這是一個Web應用程序。

+0

這是一個'WinForms'應用程序嗎? –

+0

Web應用程序 – user3158622

+0

如果它是一個Web應用程序,您如何在用戶請求(回發)之間持久保存'DataTable'? –

回答

3

爲了得到一個不同的行,你只需要Skip一些:

myDataTable.Rows.Cast<DataRow>().Skip(n).Take(1).CopyToDataTable(); 

其中n是你要多少行跳過。因此,對於第二個記錄n將是1

我非常不同意CopyDataDataTable()的使用,但它需要大量的代碼庫知識才能提供更好的方法。

+1

同意對'CopyToDataTable()'的猶豫,對我來說似乎是一種代碼味道。 –

0

介紹使用.Skip()

myDataTable.Rows.Cast<DataRow>().Skip(0).Take(1).CopyToDataTable(); 

現在,你可以簡單地跟蹤哪些記錄用戶當前正在查看和更新​​發送到.Skip()方法的價值。例如,如果用戶按下「下一步」 5次,你遞增值5倍:

myDataTable.Rows.Cast<DataRow>().Skip(5).Take(1).CopyToDataTable(); 
1

我會從數據庫中選擇它來代替,但是,使用Skip(n).Take(1)

var row3 = myDataTable.AsEnumerable().Skip(2).Take(1).CopyToDataTable(); 
0

保留一個計數器並使用跳過(n-1)。取第(n)個記錄。