Vb.net 从DataTable中获取第一个结果。为每个循环选择“无”

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循环根本不循环。是否有任何优化方法可以在不使用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循环。

看起来您希望从数据表的第一行获取
“ID”
,而无需对每个
循环使用
。您可以使用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
您需要在文件顶部导入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?当然-只需保存整个
数据行()
数组从
选择
方法到变量中。