1)Tener un poco de problemas para entender de palabra clave en LINQ
en la palabra clave crea identificador temporal para almacenar los resultados de unirse, grupo o seleccionar cláusulas.
Asumo into
palabra clave sólo puede ser utilizado como parte del grupo , se unen o seleccionar las cláusulas?
2)
a) He leído que cuando into
se utiliza como parte del grupo o seleccione cláusulas, que empalma la consulta en dos mitades y debido a que las variables de rango declarado en la primera la mitad de la consulta SIEMPRE sale del alcance en la segunda mitad de la consulta. ¿Correcto?
b) Pero cuando into
se utiliza como parte de la unirse a la cláusula, las variables rangle nunca salen del alcance dentro de la consulta (a menos que la consulta también contiene group...into
o select...into
). Supongo que esto se debe a que into
no empalma la consulta en dos mitades cuando se usa con join cláusula?
c) una expresión de consulta consiste en una de cláusula seguido de cuerpo de la consulta opcional (, en dónde, deja cláusulas) y debe terminar con cualquiera seleccionar de grupo cláusula.
d) Si into
hecho empalmes de consulta en dos mitades, se encuentra en el siguiente ejemplo grupo cláusula forma parte del cuerpo:
var result = from c1 in a1
group c1 by c1.name into GroupResult
select ...
gracias
Responder al Ufuk:
una)
Después de un grupo se obtiene mediante una secuencia de esta manera IEnumerable>
no un operador de GroupBy
devolver un resultado de tipo IEnumerable<IGrouping<Key,Foo>>
y no IEnumerable<Key,IEnumerable<Foo>>
b) ¿No podríamos argumentar que group...by...into
o join...into
empalman la consulta en un sentido que la primera mitad de la consulta, al menos conceptualmente, debe ejecutarse antes de que se ejecute la segunda mitad de la consulta?
Responder a Robotsushi:
cuanto más pienso en ello, más me da la sensación de que mi pregunta es bastante inútil ya que no tiene valor práctico lo que nunca. Aún así ...
Cuando dices que se divide. Qué quiere decir el alcance de las variables consigue dividir o la consulta SQL generada se divide
Esta es la cita:
En muchos casos, las variables de rango en un lado de esta distancia no pueden ser mezclado con las variables de rango en el otro lado. La palabra clave into que forma parte de esta cláusula group-by se utiliza para vincular o empalmar dos mitades de esta consulta. Como tal, marca el límite en el medio de la consulta sobre la cual las variables de rango típicamente no pueden escalar. Las variables de rango encima de la palabra clave into están fuera del alcance en la última parte de esta consulta.
Mi pregunta es si ambas mitades todavía se consideran una sola consulta y, como tal, toda la consulta todavía consta de solo tres partes. Si ese es el caso, entonces en mi ejemplo de código (en d) la cláusula de grupo es parte del cuerpo. Pero si las dos mitades se consideran dos consultas, a continuación, cada una de las dos consultas constará de tres partes
2. respuesta a Robotsushi:
se evalúa Esta parte de su consulta como una extracción de datos.
No estoy familiarizado con el término "extracción de datos", así que voy a adivinar que lo que estaba tratando de decir es que la primera mitad de la consulta se ejecuta/evalúa como una unidad, y luego la mitad de la consulta toma los resultados de la primera mitad y usa los resultados en su ejecución/evaluación? En otras palabras, conceptualmente tenemos dos consultas?
Con respecto a su última pregunta, ¿qué es "el cuerpo"? – svick
El libro divide la consulta en tres partes (desde cláusula, cuerpo (donde residen las cláusulas let/from/orderby/where) y final, que puede ser un grupo o una cláusula select). – user702769
Cuando dice que se divide. ¿Quiere decir que el alcance de las variables se divide o la consulta SQL generada se divide? – BentOnCoding