7

Pracuję z Entity Framework 4.1 i C#.Porównywanie wydajności generowanych zapytań dla Any() kontra Count() w Entity Framework 4.1

Który z nich najlepiej nadaje się do najlepszych osiągów?

Jeśli tak, dlaczego? (wszelkie linki do dodatkowych odczytów)?

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

LUB

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

'Any' jest bardziej czytelna i jest zwykle bardziej efektywne, ponieważ może używać' EXISTS'. Ale w Linq-To-Entities powinieneś spojrzeć na wygenerowany sql. [Czasami] (http://stackoverflow.com/a/11042691/284240) 'Count' wydaje się być szybszy. Dla Linq-To-Objects [always] (http://stackoverflow.com/a/305156/284240) użyj 'Any'. –

+0

Dzięki za przydatne linki. – Sampath

Odpowiedz

8

Hrabia wierzę spowoduje, że wszystkie rekordy należy powtórzyć w ciągu, podczas gdy każdy zatrzyma się pierwszy znajdzie.

EDIT: Wystarczy znaleźć doskonałą post o liczbie vs dowolnym take a look here

+0

Post, który łączysz jest o niezliczonej ilości, ale w odpowiedziach mówi się o Iqueriable i EF –

+0

Rzeczywiście, Kiedy używam linq do obiektów Any jest prawie zawsze szybszy, jednak gdy używasz Linq do podmiotów Count()> 0 może być szybsze, czysto Wydaje się, ze względu na często zawiły SQL generowany przez EF. –

Powiązane problemy