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
Çı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);
}
JavaScript kilitler nasıl çalışır?...
CSS üçgenler nasıl çalışır?...
Veri bağlama Nasıl çalışır?AngularJS :...
Nasıl veritabanı indeksleme çalışır?...
Bit shift (bit-shift) operatörleri ned...