以下For循环根本不循环。没有For循环,是否有任何优化的方法来做同样的事情:
For Each drID As DataRow In dttable.Select("ID=1 and FirstName='Karthik'", "ID")
NewID = CInt(drID.Item("ID"))
Exit For
Next
我尝试用
更改此内容NewID = IIf(dt.Select("ID=1 and FirstName='Karthik'", "ID").Length > 0, dt.Select("ID=1 and FirstName='Karthik'", "ID")(0).Item("ID"), 0)
是否有任何其他优化方法可以更改此For循环,甚至根本不循环。
答案 0 :(得分:3)
您希望在不使用"ID"
循环的情况下从DataTable的第一行获取For Each
。您可以使用LINQ FirstOrDefault
方法执行此操作 - 它返回集合的第一个元素或所有引用类型的默认值(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
您需要在文件顶部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