Linq último de procesamiento de comportamiento
-
09-09-2020 - |
Pregunta
En esta situación:
var allCustomers = from c in customers select c;
var oldCustomers = from o in allCustomers where o.age > 70 select o;
Se donde cláusula de llegar a la base de datos?
Solución
Creo que te refieres:
var oldCustomers = from o in allCustomers where o.age > 70 select o;
Y Sí, va a llegar a la base de datos.
Trate de usar LINQPad para ver el código SQL generado.He aquí un ejemplo:
Tengo un Actor
tabla que tiene los campos:
Id | Name | Age
El código:
var x = from c in Actors where c.Name.Contains("a") select c;
var y = from c in x where c.Age > 0 select c;
se traduce a:
-- Region Parameters
DECLARE @p0 Int = 0
DECLARE @p1 NVarChar(3) = '%a%'
-- EndRegion
SELECT [t0].[Id], [t0].[Name], [t0].[Age]
FROM [Actor] AS [t0]
WHERE ([t0].[Age] > @p0) AND ([t0].[Name] LIKE @p1)
así que usted puede ver cómo se mezclan los dos consultas en una sola.
Recuerde, IEnumerables son perezosos, así que a menos que sus elementos han de ser conocido (porque se itera a través de ellos, o porque no .Count()
a ver cuántos elementos hay, etc), no realizar cualquier consulta/operación.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow