SORU
17 Temmuz 2013, ÇARŞAMBA


Nasıl takip ETMENİZ deyimi çalışır?

Nasıl LINQ aşağıdaki ifadeyi çalışır?

İşte benim kod:

var list = new List<int>{1,2,4,5,6};
var even = list.Where(m => m%2 == 0);
list.Add(8);
foreach (var i in even)
{
    Console.WriteLine(i);
}

Çıkış:2, 4, , 8 6

Neden 2, 4, 6, değil mi?

CEVAP
17 Temmuz 2013, ÇARŞAMBA


Çıkış 2,4,6,8 deferred execution yüzünden.

Sorgu aslında sorgu değişkeni yürütülen sorgu değişken oluşturulduğunda yineledi bitti. Bu ertelenmiş yürütme denir.

-- Suprotim Agarwal, "Deferred vs Immediate Query Execution in LINQ"

Başka bir sorgu yürütme sonuçlarını önbelleğe alma için yararlıdır Immediate Query Execution denir. Suprotim gelen Agarwal tekrar:

Tek bir değer vermeyen bir sorgu anında infaz zorlamak için, bir sorgu veya sorgu değişkeni ToList(), ToDictionary(), ToArray(), Count(), Average() Max() yöntemini çağırabilirsiniz. Bu sonuç ve erişim/anlık görüntü istediğiniz gibi birçok kez bir kopyasını yapmak için izin veren dönüşüm operatörleri, yeniden çalıştırmak için gerek kalmadan denir sorgu.

Eğer çıkış olmak istiyorsan 2,4,6, .ToList() kullanın:

var list = new List<int>{1,2,4,5,6};
var even = list.Where(m => m%2 == 0).ToList();
list.Add(8);
foreach (var i in even)
 {
    Console.WriteLine(i);
 }

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Joshua Kywn

    Joshua Kywn

    17 Mayıs 2010
  • MikeyMacintosh

    MikeyM

    28 Aralık 2009
  • rekjavicxxx

    rekjavicxxx

    28 EKİM 2007