2012-11-22 14 views
7

Entity Framework 4.1 ve C# ile çalışıyorum.Entity Framework 4.1 için Any() vs Count() için oluşturulan sorguların performansının karşılaştırılması

En iyi performans için hangisi en uygunudur?

Eğer öyleyse - neden? (ek okumalar için herhangi bir link)? Herhangi bulduğu ilk duracaktır oysa ben tüm kayıtları yol açacağına inanıyoruz

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

VEYA

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

vs sayınızdan mükemmel yazı bulundu 'Any' daha okunabilir ve normalde' EXISTS' kullanabilirsiniz beri daha verimlidir. Ancak Linq-To-Entities'de oluşturulan sql'e bakmalısınız. [Bazen] (http://stackoverflow.com/a/11042691/284240) 'Count' daha hızlı görünüyor. Linq-To-Objects için [her zaman] (http://stackoverflow.com/a/305156/284240) 'Any' kullanın. –

+0

Yararlı linkler için teşekkürler. – Sampath

cevap

8

Kont, iterated edilecek.

DÜZENLEME: Sadece herhangi take a look here

+0

Bağladığınız gönderi hakkında bir şey söylenemez, ancak yanıtlarda Iqueriable ve EF hakkında konuşun. –

+0

Gerçekten, Nesneler için linq kullanılırken, hemen hemen her zaman daha hızlıdır, ancak Linq'i varlıklar için kullanırken Count()> 0 daha hızlı olabilir EF tarafından oluşturulan sık sık karışık SQL nedeniyle görünüyor. –