从数据库中确定每个项目的最后一项

时间:2014-01-02 03:53:02

标签: .net vb.net foreach

这可能是重复的,但我无法解决。我正在迭代数据库/ dataTable中的每个数据,然后使用forEach显示它。虽然我想在firstlast项目上执行某些操作。

For Each dtrow In gpsDtable.Rows
        If ReferenceEquals(Collection.Item(Collection.Count - 1), dtrow) Then
            'do something for the last item in loop
            'I also want to do something for the first item
        End If
    'do things in loop
 Next

刚刚看到这个代码片段..而且我收到此错误

Reference to a non share member requires an object reference.

由于我不太清楚这是什么意思,所以我要问...... 如果错误,请重新编写代码。实际上,if语句是一个错误:P

3 个答案:

答案 0 :(得分:1)

Dim  i as Integer
For Each dtrow In gpsDtable.Rows
If i =0 Then
'Do Something
Else If i = gpsDtable.Rows.count-1 Then
'Do Something
End If
i=i+1
Next

答案 1 :(得分:0)

您在代码中引用了非共享成员,但未能提供对象引用。您不能使用类名本身来限定未共享的成员。必须首先将实例声明为对象变量,然后由变量名称

引用

答案 2 :(得分:0)

我猜,该代码段并不是一个确切的代码。您希望使用自己的Collection变量(在本例中为Collection.Item)更改Collection.CountgpsDtable.Rows,例如:

For Each dtrow In gpsDtable.Rows
    If ReferenceEquals(gpsDtable.Rows(gpsDtable.Rows.Count - 1), dtrow) Or ReferenceEquals(gpsDtable.Rows(0), dtrow) Then
        'do something for the last and first item in loop
    End If
    'do things in loop
Next

或者,如果您更喜欢使用foreach循环计数器来确定第一次和最后一次迭代,那么我认为它与使用标准for循环相同:

For i As Integer = 0 To gpsDtable.Rows.Count - 1
    If i = 0 Or i = gpsDtable.Rows.Count - 1 Then
        'do something for the first and last item in loop
    End If
    'do things in loop
Next