2 votes

Comportement du traitement de la dernière version de Linq

Dans cette situation :

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

Will clause atteint la base de données ?

2voto

Oscar Mederos Points 9159

Je pense que tu veux dire :

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

Et oui, il atteindra la base de données.

Essayez d'utiliser LINQPad pour voir le code SQL généré. Voici un exemple :

J'ai un Actor qui contient les champs :

Id | Name | Age

Le code :

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;

est traduit en :

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

pour que vous puissiez voir comment il mélange les deux requêtes en une seule.

Rappelez-vous, les IEnumerables sont paresseux, donc à moins que leurs éléments doivent être connus (parce que vous les itérez, ou parce que vous faites .Count() pour voir combien d'articles il y a, etc.), il n'effectuera aucune requête/opération.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X