2013-08-05 30 views
1

下面的代碼wth行CopyToDataTable()拋出錯誤,當有沒有任何可用的行,如何處理它?空行CopyToDataTable()

<WebMethod()> _ 
Public Shared Function GetContestants() As String 
    Dim dttemp As DataTable 
    currentCount += pageSize 
    dttemp = dtContestantList.Rows.Cast(Of System.Data.DataRow)().Skip(currentCount).Take(pageSize).CopyToDataTable() 
    Return GetJson(dttemp) 
End Function 
+0

這不是LINQ到SQL ......但是:什麼錯誤?它說什麼? –

+1

順便提一句,不相關的:但是 - 這個方法建議dtContestantList是一個靜態的(「共享」)DataTable - 如果你打算修改DataTable,它是非常小心的 - 它不是線程安全的 –

+0

錯誤說:源不包含DataRows 。 – user2654740

回答

1

你只需要檢查第一:

Dim rows = dtContestantList.Rows.Cast(Of System.Data.DataRow)().Skip(currentCount).Take(pageSize) 
If rows.Any() Then 
    dttemp = rows.CopyToDataTable() 
    Return GetJson(dttemp) 
Else 
    Return "" 
End If 

可能的例外與CopytoDataTable

  • ArgumentNullException
    源的IEnumerable序列爲null,並且一個新的表不能創建。
  • InvalidOperationException
    • 源序列中的DataRow的狀態爲Deleted。
    • 源序列不包含任何DataRow對象。
    • 源序列中的DataRow爲空。

請注意,你應該小心與ASP.NET共享/靜態DataTables這是一個多線程的環境。它不是線程安全的。您應該只將它用於查找。

相關問題