как представлено будет выполнять только один оператор select. Интересно, скрывается ли проблема при перемещении вопроса на простой пример. Скорее всего, в коде он не перетаскивает данные в список. Такие методы, как .Where()
только составляютзапрос - это не загружает данные в список, так что следующее 2 запросы:
var tableData = dataContext.TableName.Where(row => row.Foo == bar);
foreach(var items in tableData) {...}
foreach(var items in tableData) {...}
Добавление .ToList()
заставит его в буфер в памяти один TSQL-запрос; последующее перечисление по списку будет выполнено в памяти (LINQ-to-Objects).
Конечно, можно профилировать, что LINQ к SQL выполняется довольно просто:
dataContext.Log = Console.Out; // or any other text-writer
и на ваш вопрос? – Bazzz
@Miral: Я взял на себя смелость, чтобы изменить ваш вопрос на реальный вопрос, а также отредактировать теги. Пожалуйста, просмотрите его и измените, если я ничего не понял. –
Вы действительно выполнили запрос дважды? Первый раз, возможно, был просто подготовкой или синтаксической проверкой (SET PARSEONLY) – Blorgbeard