将ToList()添加到Linq-to-Sql查询中的“问题”是什么?

时间:2009-07-17 14:29:49

标签: linq-to-sql

This question让我想到以下几点:

  

将ToList()添加到Linq-to-Sql查询时,有哪些'陷阱'?

我对最佳实践和轶事同样感兴趣。

3 个答案:

答案 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);
}