SORU
15 HAZİRAN 2011, ÇARŞAMBA


Uygun Etmeniz where

Günlük hayatta, ama genellikle basit ifadeler benim zamanımda etmeniz makul yazıyorum. Onları yazmak için birçok yol vardır kullanırken fark ettim ve her biri aynı sonuçları söyleyebileceğim kadarıyla. Örnek;

from x in Collection
  where x.Age == 10
  where x.Name == "Fido"
  where x.Fat == true
  select x;

Bu eşdeğer sonuçları ile ilgili olarak en az kadar görünüyor:

from x in Collection
  where x.Age == 10 &&
        x.Name == "Fido" &&
        x.Fat == true
  select x;

Yani gerçekten bir fark sözdizimi daha başka var mı? Eğer öyleyse, tercih edilen stil ve ne için yapılır?

CEVAP
15 HAZİRAN 2011, ÇARŞAMBA


EDİT: Nesneleri etmesini beklerdim nasıl davranması yok ETMENİZ için. Bu konuda yazdım blog post ilginizi çekebilir...


Çağırılacak açısından farklılar - ilk eşdeğerdir:

Collection.Where(x => x.Age == 10)
          .Where(x => x.Name == "Fido")
          .Where(x => x.Fat == true)

kanalı bulunurken, ikinci eşdeğerdir:

Collection.Where(x => x.Age == 10 && 
                      x.Name == "Fido" &&
                      x.Fat == true)

Şimdi ne fark eder kiaslındayapar Where uygulanması çağrıldığını bağlıdır. Eğer SQL tabanlı bir sağlayıcı yoksa, ikisi aynı SQL oluşturma sonuna kadar beklerdim. Eğer Nesneleri bu SERİ ise, ikinci yönlendirme (sadece iki kullanımına dört yerine dahil olacak) daha az düzeyde olacaktır. İster yönlendirme bu seviyeleri vardırönemlihız açısından farklı bir konu.

Genellikle ederdim çeşitli kullanım where yan düşünüyorsanız gibiler temsil eden önemli ölçüde farklı koşullara (örneğin bir ilgisi bir parçası olan bir nesne, ve bir tamamen ayrı) ve bir where fıkra çeşitli koşulları yakından ilişkilidir (örneğin, belirli bir değeri daha az ve daha az daha fazla). Temelde ufak bir performans farkı önce okunabilir olması dikkate değer.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hans peder sahl

    hans peder s

    22 Temmuz 2009
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • TomSka

    TomSka

    30 Mayıs 2006