7

Ich arbeite mit Entity Framework 4.1 und C#.Vergleichen der Leistung generierter Abfragen für Any() vs Count() in Entity Framework 4.1

Welches ist am besten für die beste Leistung geeignet?

Wenn ja - warum? (irgendwelche Verbindungen für zusätzliche Lesungen)?

bool isBoarding = invoice.Allocations.Where(a => a.Service.Key == "boarding").Count() > 0; 

ODER

bool isBoarding = invoice.Allocations.Any(a => a.Service.Key == "boarding"); 
+0

'Any' ist besser lesbar und ist in der Regel effiziente, da es' EXISTS' verwenden kann. Aber in Linq-To-Entities sollten Sie sich die generierte SQL ansehen. [Manchmal] (http://stackoverflow.com/a/11042691/284240) "Count" scheint schneller zu sein. Verwenden Sie für Linq-To-Objekte [immer] (http://StackOverflow.com/a/305156/284240) 'Any'. –

+0

Danke für die nützlichen Links. – Sampath

Antwort

8

Graf Ich glaube, dass alle Datensätze verursachen iteriert werden, während Alle an der ersten Haltestelle wird es findet.

EDIT: hätte gerade einen ausgezeichneten Beitrag über Graf vs jeden take a look here

+0

Der Beitrag, den Sie verknüpfen, ist über Ienumerable, aber in Antworten es über Iqueriable und EF sprechen –

+0

In der Regel bei der Verwendung von LINQ zu Objekten Any ist fast immer schneller, jedoch bei Verwendung von Linq zu Entitäten Count()> 0 kann schneller sein, rein Es scheint wegen der oft verschachtelten SQL von EF erzeugt. –

Verwandte Themen