На самом деле, это тот же вопрос, что и этот пост:
Как я могу убедиться, что мои запросы LINQ выполняются при вызове в моем DAL, а не с задержкой?
Но поскольку он не объяснил, почему ему это нужно, вопрос, кажется, был немного упущен. Вот моя похожая, но лучше объясненная проблема:
У меня есть несколько потоков двух типов (ненадолго игнорируя потоки пользовательского интерфейса). Существует тип потока «сбор данных» и тип потока «вычисления». Потоки сбора данных работают медленно. Есть довольно много данных, которые нужно просеять из разных мест. Вычислительные потоки сравнительно быстрые. Модель проектирования до этого момента заключалась в том, чтобы отправлять потоки сбора данных для поиска данных, а когда они завершены, передавать данные для вычислений.
Когда я программировал сбор данных в Linq, мне пришлось перенести часть этой медлительности обратно в потоки вычислений. Теперь есть элементы данных, которые не разрешаются полностью, пока они не используются во время вычислений, и это проблема.
Я хотел бы заставить Linq завершить свою работу в заданное время (конец инструкции? конец метода? вызов метода «пожалуйста, закончи, черт возьми»), чтобы я знал, что не буду платить за это позже. Добавление «.ToList()» в конец Linq 1. неудобно и 2. похоже на упаковку чего-то, что в любом случае будет распаковано в другом потоке.