1

当没有任何可用行时,下面的代码行 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
4

1 回答 1

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,无法创建新表。
  • 无效操作异常
    • 源序列中的 DataRow 的状态为 Deleted。
    • 源序列不包含任何 DataRow 对象。
    • 源序列中的 DataRow 为空。

请注意,您应该小心DataTablesASP.NET 中的共享/静态,这是一个多线程环境。它不是线程安全的。您应该仅将其用于查找。

于 2013-08-05T22:28:47.550 回答