下面的 For 循环根本不循环。在没有 For 循环的情况下,是否有任何优化的方法可以做到这一点:
For Each drID As DataRow In dttable.Select("ID=1 and FirstName='Karthik'", "ID")
NewID = CInt(drID.Item("ID"))
Exit For
Next
Run Code Online (Sandbox Code Playgroud)
我试过用
NewID = IIf(dt.Select("ID=1 and FirstName='Karthik'", "ID").Length > 0, dt.Select("ID=1 and FirstName='Karthik'", "ID")(0).Item("ID"), 0)
Run Code Online (Sandbox Code Playgroud)
有没有其他优化的方法来改变这个根本不循环的 For 循环。
看起来您想"ID"
在不使用For Each
循环的情况下从 DataTable 的第一行获取。您可以使用 LINQFirstOrDefault
方法来做到这一点- 它返回集合的第一个元素或默认值(Nothing
对于所有引用类型),它的集合没有得到结果:
Dim firstRow As DataRow = dttable.Select("ID=1 and FirstName='Karthik'", "ID").FirstOrDefault()
If Not firstRow Is Nothing Then
NewID = CInt(firstRow.Item("ID"))
Else
NewID = 0
End If
Run Code Online (Sandbox Code Playgroud)
您需要Imports System.Linq
在文件的顶部才能使其正常工作。
或者没有 LINQ:
Dim results As DataRow() = dttable.Select("ID=1 and FirstName='Karthik'", "ID")
If results.Length > 0 Then
NewID = CInt(results(0).Item("ID"))
Else
NewID = 0
End If
Run Code Online (Sandbox Code Playgroud)