Considérer ce code:
var query = (from a in db.Table
where a = SomeCondition
select a.SomeNumber).AsEnumerable();
int recordCount = query.Count();
int totalSomeNumber = query.Sum();
decimal average = query.Average();
Supposons query
prend un temps très long à exécuter. J'ai besoin d'obtenir le nombre d'enregistrements, le total des SomeNumber
s'est retourné, et de prendre une moyenne à la fin. J'ai pensé basé sur ma lecture qu' .AsEnumerable()
à l'exécution de la requête à l'aide de LINQ-to-SQL, puis utiliser LINQ-to-Objets pour l' Count
, Sum
, et Average
. Au lieu de cela, quand je fais cela dans LINQPad, je vois la même requête est exécutée trois fois. Si je remplace .AsEnumerable()
avec .ToList()
, il ne s'est interrogé à la fois.
Ai-je raté quelque chose au sujet de ce qu' AsEnumerable
est/ne?