Suis-je malentendu LINQ to SQL .AsEnumerable()?

Considérer ce code:

var query = db.Table
              .Where(t => SomeCondition(t))
              .AsEnumerable();

int recordCount = query.Count();
int totalSomeNumber = query.Sum();
decimal average = query.Average();

Assumer query prend un temps très long à exécuter. J'ai besoin d'obtenir le nombre d'enregistrements, le total des SomeNumbers'est retourné, et de prendre une moyenne à la fin. J'ai pensé basé sur ma lecture que .AsEnumerable() à l'exécution de la requête à l'aide de LINQ-to-SQL, puis utiliser LINQ-to-Objets pour la 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 le .AsEnumerable() avec .ToList(), il ne s'est interrogé à la fois.

Ai-je raté quelque chose au sujet de ce que AsEnumerable est/ne?

  • Très utile pour comprendre le comportement de AsEnumerable()
InformationsquelleAutor Ocelot20 | 2010-08-02