7

Count をラムダとして使用しようとすると、奇妙なエラーが発生します

'Public ReadOnly Property Count As Integer' にはパラメーターがなく、その戻り値の型にインデックスを付けることができません'

LongCountにカウントすると、魔法のように機能します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
4

1 に答える 1

6

これを試して

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

上記のものよりもはるかに簡単です。

それが役立つことを願っています

List には、List クラスで定義された Count プロパティと、IEnumerable で定義された Count() 拡張メソッドの両方があります。これは冗長に思えるかもしれませんが、すべての IEnumerable 実装でカウントが定義されているわけではないことに注意してください。

ICollection または ICollection を実装するコレクションは、Count プロパティを指定する必要があります。List、配列、およびその他の多くのコレクションが ICollection を実装しているため、これは Count を直接呼び出し、拡張メソッドの呼び出しを避けることを意味します。

于 2012-12-28T16:16:57.630 に答える