Bu dizide LINQ'da var. Neden List.Count() ve IEnumerable.Count() farklı sonuçlar döndürüyor?
string[] colors = { "green", "brown", "blue", "red" };
ve dönüş 0.
var list = new List<string>(colors);
IEnumerable<string> q3 = list.Where(c => c.Length == 3);
list.Remove("red");
listBox1.Items.Add("Oh! That is : " + q3.Count());
ve diğer dönüş 1.
var list = new List<string>(colors);
List<string> q3 = list.Where(c => c.Length == 3).ToList();
list.Remove("red");
listBox1.Items.Add("Oh! That is : " + q3.Count());
gerçekleşmesi Neden bu kod? Liste ile kabul edilemez arasındaki fark nedir?
[Ertelenmiş yürütme] (http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx) aradığınız terimdir. Birçok [Enumerable'da LINQ yöntemleri] (http://msdn.microsoft.com/en-us/library/system.linq.enumerable_methods (v = vs.100) .aspx) tembel olarak yürütülür. –
olası yinelenen [IEnumerable ve Array, IList ve Liste arasındaki fark nedir?] (Http://stackoverflow.com/questions/764748/whats-the-difference-between-ienumerable-and-array-ilist-and-list – bit
@bit: Gerçekten bunun bir kopyası değil. Bu gerçekten LINQ'da ertelenmiş infazla ilgili. –