快速检查列表中的所有子项

时间:2010-07-19 09:26:48

标签: .net vb.net .net-2.0

我有一个列表,其中包含一个布尔值作为其中一个属性。我需要检查其中每一个是否属实。现在通常LINQ会给出一个很好的干净答案,但是当我使用.NET 2.0时我无法使用它。

如果有更好的方法可以做到这一点,或者我将不得不为每个循环做一个并突然发现错误?

编辑: 似乎我本来可以更清楚一些。我在列表中有一个对象(例如List (Of MyObject))。此对象上有一个名为Processed的布尔属性。

我需要检查列表中的所有对象是否都已处理。

所以在LINQ中我会这样做: if (from o in list where o.processed = false select o).count = 0 then....

3 个答案:

答案 0 :(得分:1)

ArrayListList<T>有很多方法可以完成LINQ的工作。他们在LINQ之前一直在那里。

具体来说,请查看Exists方法。不幸的是我不知道VB语法:)

答案 1 :(得分:1)

使用List<Of Boolean>,您可以使用Contains()方法:

If MyList.Contains(false) Then
  // at least one false
Else
  // all true
End If

答案 2 :(得分:0)

您可以编写自己的通用列表实现,并添加属性IsProcessedCompletely:

 Public Class My_Class
        Public Property IsProcessed() As Boolean
            Get
            End Get
            Set(ByVal value As Boolean)
            End Set
        End Property
    End Class

    Public Class My_List
        Inherits List(Of My_Class)

        Public ReadOnly Property IsProcessedCompletely() As Boolean
            Get
                Dim enumerator As List(Of My_Class).Enumerator = MyBase.GetEnumerator
                While enumerator.MoveNext
                    If Not enumerator.Current.IsProcessed Then
                        Return False
                    End If
                End While
                Return True
            End Get
        End Property
    End Class