Dim query = (From p in Parent _
select _
p.ID, _
Tags = String.Join("|", p.Child.Select(Function(c) c.Tag.TagName).ToArray)).Take(100)
Dans la requête ci-dessus, lorsque vous utilisez prendre pour limiter les lignes renvoyées, une requête SQL distincte est exécutée pour chaque ligne de retourner le champ 'Balises. Si je supprime Take (100), une seule requête à envoyer à SQL Server. Alors, comment limiter le nombre de lignes renvoyées, tout en empêchant l'exécution d'une nouvelle sous-requête pour chaque ligne?LinqToSql - Prévenir les sous requêtes lorsque limitant nombre de lignes retournées
Pourquoi cela fonctionne-t-il sans Take()? Si je remplace Take avec ToList() pour exécuter la requête, une seule requête SQL est générée! –
Parce que Take est une action supplémentaire qui doit être effectuée sur le serveur SQL. query-thats-already-partial-execute.ToList(). Take (100), va générer 1 requête; query-thats-already-partial-execute.Take (100) .ToList() générera des requêtes supplémentaires. –
D'accord, mais il semble toujours qu'il n'y a aucun moyen de résoudre ma question initiale. Même en supprimant toArray (par exemple, en changeant simplement en p.Child), vous obtenez le même comportement. –