遇到了这段代码。
var dic = new Dictionary<int, string>();
for(int i=0; i<20000; i++)
{
dic.Add(i, i.ToString());
}
var list = dic.Where(f => f.Value.StartsWith("1")).Select(f => f.Key);//.ToList(); //uncomment for fast results
Console.WriteLine(list.GetType());
var list2 = dic.Where(f => list.Contains(f.Key)).ToList();
Console.WriteLine(list2.Count());
因此,当 .ToList() 被评论时它很慢,当没有时 - 它很快。可在此处重现如何解释?我是否应该始终制作所有 ToList() 以确保速度(即在哪种情况下 IEnumerable 会更可取)?注意我只谈论 linq to objects,我知道 linq to sql 懒惰和东西。