4

下面的 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 循环。

4

1 回答 1

7

看起来您想"ID"从 DataTable 中的第一行获取而不使用For Each循环。您可以使用 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

您需要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
于 2013-04-02T05:55:45.567 回答