【发布时间】:2013-11-10 10:39:41
【问题描述】:
遇到了这段代码。
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() 被评论时它很慢,当没有评论时 - 它很快。可重现here这怎么解释?我是否应该始终制作所有 ToList() 以确保速度(即在哪种情况下 IEnumerable 会更可取)?注意我说的只是 linq to objects,我知道 linq to sql 的惰性和其他东西。
【问题讨论】:
-
你是怎么看时间的?
-
@JoelCoehoorn 挂钟