Какие «Gotchas» связаны с привязкой ToList () к запросу Linq-to-Sql? - PullRequest
0 голосов
/ 17 июля 2009

Этот вопрос заставил меня задуматься о следующем:

Какие «ошибки» связаны с привязкой ToList () к запросу Linq-to-Sql?

Меня одинаково интересуют лучшие практики и анекдоты.

Ответы [ 3 ]

1 голос
/ 17 июля 2009

Большой является потеря отложенного исполнения. Обычно запрос linq ничего не делает, пока вы не выполните итерацию по результатам. Вызов .ToList () выполняет итерации по результатам, и запрос сразу же запускается.

0 голосов
/ 17 июля 2009

Снижение способности 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);
}
0 голосов
/ 17 июля 2009

Без учета транзакций:

using (PlayerDataContext context = new PlayerDataContext())
{
    var players = context.Players.ToList();
    MethodThatUnexpectedlyTakes25SecondsToComplete();
    Console.WriteLine(players.Count()); // Outputs a stale count
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...