Linq Count-Methode und Leistung

8

Ich verwende Linq ausgiebig in meinem Projekt, so weit Leistung ist gut, ich habe nur einen Zweifel, wenn ich Linq so etwas verwendet habe

%Vor%

Führt getData.Count () und getdata.ToList () zwei verschiedene Abrufe für ein Objekt aus? Oder nach dem Entladekonzept, wenn getData.Count () ausgeführt wird, wird keine Operation für .ToList ausgeführt.

Wenn nicht, sollte ich die Count-Bedingung entfernen, wird es die Leistung verbessern?

Ich benutze Enterprise Library 5.0 acessor Methoden, um Daten aus der DB zu bekommen List lstpack = neue Liste ();

%Vor%

Jetzt die Liste zurückgeben

    
Deepesh 16.09.2011, 13:19
quelle

1 Antwort

13

Es ist schwer zu sagen, da wir nicht wissen, was getData ist, aber:

  • Ja, möglicherweise werden sie völlig separate Operationen sein
  • Im Allgemeinen verwenden Sie Any() anstelle von Count() > 0 ; es kann viel effizienter sein, besonders in LINQ to Objects
  • Der Aufruf von ToList wird relativ billig sein, wenn es leer ist - mach es einfach wenn du eine Liste brauchst
  • Wenn Sie wirklich nicht in einer Liste benötigen, wiederholen Sie es trotzdem (wenn keine Daten vorhanden sind, gelangen Sie nie in den Schleifenkörper)
  • Where gibt niemals null
  • zurück

Mit anderen Worten, ich würde wahrscheinlich schreiben:

%Vor%     
Jon Skeet 16.09.2011, 13:22
quelle

Tags und Links