Pergunta

Nesta situação:

var allCustomers = from c in customers select c;
var oldCustomers = from o in allCustomers where o.age > 70 select o;

Vai onde cláusula atinge banco de dados?

Foi útil?

Solução

Eu acho que você quer dizer:

var oldCustomers = from o in allCustomers where o.age > 70 select o;

E sim, chegará ao banco de dados.

Tente usar o LINQPad para ver o código SQL gerado.Aqui está um exemplo:

eu tenho um Actor tabela que contém os campos:

Id | Name | Age

O 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;

é traduzido para:

-- 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)

então você pode ver como ele mistura as duas consultas em apenas uma.

Lembre-se, IEnumerables são preguiçosos, então você, a menos que seus elementos precisem ser conhecidos (porque você itera através deles, ou porque você não .Count() para ver quantos itens são, etc.), ele não realizará nenhuma consulta/operação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top