De hecho, esta es la misma pregunta que este post:Fuerza LINQ a no retrasar la ejecución
How can I make sure my LINQ queries execute when called in my DAL, not in a delayed fashion?
Pero ya que él no ha explicado por qué él quería, la cuestión parece haber sido Pasó un poco. Aquí está mi problema similar pero mejor explicado:
Tengo un puñado de hilos en dos tipos (ignorando los hilos de UI por un momento). Hay un tipo de subproceso de "recopilación de datos" y un tipo de subproceso de "cómputo". Los hilos de recopilación de datos son lentos. Hay una gran cantidad de datos para ser examinados a través de una variedad de lugares. Los hilos de cálculo son comparativamente rápidos. El modelo de diseño hasta este punto es enviar subprocesos de recopilación de datos para encontrar datos, y cuando se completan pasan los datos para su cálculo.
Cuando codifiqué mi recopilación de datos en Linq terminé alzando parte de esa lentitud de nuevo en mis hilos de cálculo. Ahora hay elementos de datos que no se resuelven por completo hasta que se usan durante el cálculo, y eso es un problema.
Me gustaría obligar a Linq a terminar su trabajo en un momento dado (fin del enunciado? Fin del método? "Por favor termine, maldito" método de llamada) para que sepa que no voy a pagar más tarde en. Agregar ".ToList()" al final de Linq es 1. incómodo, y 2. se siente como algo de boxeo que está a punto de ser desempaquetado en otro hilo momentáneamente de todos modos.
Recuerde: el valor de una comprensión de consulta es un objeto que representa _query en sí_, no sus _resultados_. Si desea una instantánea de los resultados, tendrá que preguntar de alguna manera el objeto de la consulta (y luego vivir con el hecho de que podrían estar desactualizados en el momento en que los usa). "ToList" parece ser la forma más fácil de hacer eso. –