Vb.net 从DataTable中获取第一个结果。为每个循环选择“无”
下面的For循环根本不循环。是否有任何优化方法可以在不使用For循环的情况下执行相同操作:Vb.net 从DataTable中获取第一个结果。为每个循环选择“无”,vb.net,Vb.net,下面的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
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循环。看起来您希望从数据表的第一行获取
“ID”
,而无需对每个循环使用。您可以使用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
您需要在文件顶部导入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
您好,就目前情况而言,这可能会关闭。考虑修改你的问题,使它更加集中和理解。目前,很难说有人在问什么。试着改变标题。@AlastairPitts我想问题已经很清楚了-他也想这样做(从的第一个结果中选择“ID”
。为每个循环选择()
方法调用,不使用。可以不用Linq。因为使用的框架是2.0?当然-只需保存整个数据行()
数组从选择方法到变量中。