Question

Dans cette situation:

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

Va clause de portée de la base de données?

Était-ce utile?

La solution

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 table qui a 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;

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

donc vous pouvez voir comment il mêle les deux requêtes en une seule.

Rappelez-vous, IEnumerables sont paresseux, vous, à moins que leurs éléments doivent être connus (parce que vous itérer à travers eux, ou parce que vous n' .Count() pour voir combien d'éléments sont, etc), il ne sera pas exécuter n'importe quelle requête/opération.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top