我有一個包含某些列的數據表。我能夠在整個中繼器中顯示它們。但是,我想要做的是逐個顯示行。我想創建一個像下一個去顯示前一個按鈕。我做了類似以下內容:C#數據表一次只取一行
myDataTable.Rows.Cast<DataRow>().Take(1).CopyToDataTable();
這是給我的第一行。現在我該如何使用這個概念來獲得下一行(第2行),然後是第3行.....直到第n行。對於不同的情況,返回的行是不同的。這是一個Web應用程序。
我有一個包含某些列的數據表。我能夠在整個中繼器中顯示它們。但是,我想要做的是逐個顯示行。我想創建一個像下一個去顯示前一個按鈕。我做了類似以下內容:C#數據表一次只取一行
myDataTable.Rows.Cast<DataRow>().Take(1).CopyToDataTable();
這是給我的第一行。現在我該如何使用這個概念來獲得下一行(第2行),然後是第3行.....直到第n行。對於不同的情況,返回的行是不同的。這是一個Web應用程序。
爲了得到一個不同的行,你只需要Skip
一些:
myDataTable.Rows.Cast<DataRow>().Skip(n).Take(1).CopyToDataTable();
其中n
是你要多少行跳過。因此,對於第二個記錄n
將是1
。
我非常不同意CopyDataDataTable()
的使用,但它需要大量的代碼庫知識才能提供更好的方法。
同意對'CopyToDataTable()'的猶豫,對我來說似乎是一種代碼味道。 –
介紹使用.Skip()
:
myDataTable.Rows.Cast<DataRow>().Skip(0).Take(1).CopyToDataTable();
現在,你可以簡單地跟蹤哪些記錄用戶當前正在查看和更新發送到.Skip()
方法的價值。例如,如果用戶按下「下一步」 5次,你遞增值5倍:
myDataTable.Rows.Cast<DataRow>().Skip(5).Take(1).CopyToDataTable();
我會從數據庫中選擇它來代替,但是,使用Skip(n).Take(1)
:
var row3 = myDataTable.AsEnumerable().Skip(2).Take(1).CopyToDataTable();
保留一個計數器並使用跳過(n-1)。取第(n)個記錄。
這是一個'WinForms'應用程序嗎? –
Web應用程序 – user3158622
如果它是一個Web應用程序,您如何在用戶請求(回發)之間持久保存'DataTable'? –