vb计数奇怪的行为

时间:2012-12-28 15:49:11

标签: vb.net

尝试将Count用作lambda时,我遇到了一个奇怪的错误

  

'Public ReadOnly Property Count As Integer'没有参数及其参数   返回类型无法索引'

如果我计数 LongCount ,它会神奇地起作用。根据{{​​3}} 3年前的报道,这是一个众所周知的问题。它似乎仍然存在。 我的问题是如何解决此问题?

Module Module1
    Sub Main()

        Dim wit2 As New List(Of TestCount) From {New TestCount With {.title = "foo" _
                                                                 ,.PartNumber = "bar"} _ 
                                                 , New TestCount With {.title = "chuck" _
                                                               , .PartNumber = "norris"}}                                          
        Console.WriteLine(wit2.Count(Function(x) x.title = "chuck"))
    End Sub
    Friend Class TestCount
        Property title As String
        Property PartNumber As String
    End Class
End Module

1 个答案:

答案 0 :(得分:6)

试试这个

wit2.Where(Function(elem) elem.title="chuck").Count()

它比上面的要简单得多。

希望它会有所帮助

List既具有List类中定义的Count属性,又具有在IEnumerable上定义的Count()扩展方法。这似乎是多余的,但请记住,并非所有IEnumerable实现都定义了计数。

任何实现ICollection或ICollection的集合都必须指定Count属性。由于List,数组和许多其他集合实现ICollection,这意味着直接调用Count并避免调用扩展方法。