このコードに出くわしました。
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についてのみ話していることに注意してください.linq to sqlの怠惰などを知っています。