答案 0 :(得分:1)
最重要的是延迟执行的丢失。在对结果进行迭代之前,linq查询通常不会执行任何操作。调用.ToList()遍历结果,因此将立即运行查询。
答案 1 :(得分:0)
无视交易:
using (PlayerDataContext context = new PlayerDataContext())
{
var players = context.Players.ToList();
MethodThatUnexpectedlyTakes25SecondsToComplete();
Console.WriteLine(players.Count()); // Outputs a stale count
}
答案 2 :(得分:0)
妥协linq-to-sql优化的能力:
using (PlayerDataContext context = new PlayerDataContext())
{
// suboptimal
var players = context.Players.ToList();
Console.WriteLine(players.Count());
// optimal
var playerCount = context.Players.Count();
Console.WriteLine(playerCount);
}