Ich füge nur ein paar zusätzliche Informationen hinzu:
Le Count()
Erweiterung nicht immer iteriert. Betrachten Sie Linq to Sql, wo die Zählung an die Datenbank geht, aber anstatt alle Zeilen zurückzubringen, gibt sie die Sql Count()
Befehl und gibt stattdessen dieses Ergebnis zurück.
Außerdem ist der Compiler (bzw. die Laufzeitumgebung) so intelligent, dass er die Objekte Count()
Methode, wenn sie eine hat. Es ist also nicht wie andere Antwortende sagen, völlig unwissend zu sein und immer wieder zu iterieren, um Elemente zu zählen.
In vielen Fällen, in denen der Programmierer lediglich die if( enumerable.Count != 0 )
unter Verwendung der Any()
Erweiterungsmethode, wie in if( enumerable.Any() )
ist mit der lazy evaluation von linq weitaus effizienter, da sie einen Kurzschluss erzeugen kann, sobald sie feststellen kann, dass es irgendwelche Elemente gibt. Außerdem ist es besser lesbar