Dans cette situation :
var allCustomers = from c in customers select c;
var oldCustomers = from o in allCustomers where o.age > 70 select o;
Will où clause atteint la base de données ?
Dans cette situation :
var allCustomers = from c in customers select c;
var oldCustomers = from o in allCustomers where o.age > 70 select o;
Will où clause atteint la base de données ?
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 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.