2009-07-13 10 views

cevap

6

LinqToObjects (açıkça LinqToSql, LinqToWhatever kendi kuralları vardır) konuştuğumuzun farz edilmesi durumunda, yeni bir yineleyicinin oluşturulması gerektiğinden, ilk fark çok yavaş olacaktır, ancak farkı fark etmenin inanılmaz derecede muhtemel değildir. Karşılaştırmaların sayısı ve incelenen kalem sayısı bakımından, iki çalışmanın gerçekleştiği zaman neredeyse aynı olacaktır. değil ne olacağını Endişeliysen durumda

, .Where operatör n öğeleri listesini filtreler olması ve .FirstOfDefault filtrelenmiş listenin dışında ilk sürer. Her iki dizide de doğru olarak kısa devre

0

Her iki durumda da Enumerable statik sınıf tarafından sağlanan Uzantı yöntemlerini kullandığınızı varsayarsak, ikisi arasındaki herhangi bir farkı ölçmek için zorlanırsınız.

uzun form

...

myCollection.Where(...).FirstOrDefault() 

... (teknik) ve işlem birkaç döngü içerir (Where() madde işlemek için bir aracı yineleyici oluşturma) daha fazla bellek aktivitesi üretecektir.

şey bu yineleyiciler tembel olmasıdır - Where() fıkra yüklemi değerlendirerek tüm liste üzerinden neşeyle gitmeyecek, sadece geçmesine bulmak için gerektiği kadar öğeleri kontrol edecektir.