从没有 For Each 循环的 DataTable.Select 中获取第一个结果

Jeg*_*jan 3 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
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 循环。

Mar*_*zek 5

看起来您想"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)