1

C# で次のオブジェクトがある場合:

IEnumerable<Product> products;

そして、含まれている要素の数を取得したい場合は、次を使用します。

int productCount = products.Count();

しかし、VB.NET にはそのようなメソッドはないようです。VB.NETで同じ結果を達成する方法を知っている人はいますか?

4

3 に答える 3

3

CountVB.NET で利用できます。

   Dim x As New List(Of String)
   Dim count As Integer

   x.Add("Item 1")
   x.Add("Item 2")

   count = x.Count

http://msdn.microsoft.com/en-us/library/bb535181.aspx#Y0

于 2012-06-25T10:11:02.103 に答える
0

Count().net の以降のバージョンでは、 associated withと呼ばれる拡張メソッドがあります。これは、基になる列挙子がこれらのいずれかをサポートしている場合はorIEnumerable<T>を使用し、サポートしていない場合はアイテムを繰り返しカウントします。IList<T>.Count()ICollection.Count()

これに関して常に考慮されるとは限らない重要な注意点:IEnumerable<DerivedType>一般に は の代わりに使用できますが、 を実装するが実装しないIEnumerable<BaseType>型は、として使用すると効率的にカウントされますが、 としてキャストすると効率的にカウントされません(クラスがメソッドをサポートしている場合でも)。正しい結果が返されても、システムはそれを探しません。代わりに、実装されないものを探します。IList<DerivedType>ICollectionIEnumerable<DerivedType>IEnumerable<BaseType>IList<DerivedType>.Count()IList<BaseType>

于 2012-06-25T15:41:39.473 に答える
0

一般に、IEnumerable は、基になるコレクション (List など) がサポートされていない限り、Count を持ちません。

ジェネリック IEnumerable が Count メソッドを実装するために何が必要かを考えてみてください。IEnumerable はデータが要求されたときにのみ実行されるため、Count を実行するには、見つかった要素の数を追跡しながら最後まで反復する必要があります。

通常、この反復は終了しますが、永久にループするクエリをセットアップできます。Count は、時間的に非常にコストがかかるか、IEnumerable では危険です。

于 2013-06-25T14:56:50.927 に答える