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

  • funbro1

    funbro1

    11 Aralık 2007
  • We've moved!

    We've moved!

    7 Ocak 2008
  • MyCyberAcademy

    MyCyberAcade

    2 EKİM 2011