Linq Wo Klauseln - besser zu stapeln oder zu kombinieren?

9

Wenn ich eine Methodenkette für LINQ schreibe, kann ich die Where-Anweisungen auf zwei Arten tun:

%Vor%

Oder

%Vor%

Gibt es irgendwelche Vorteile von einem über den anderen?

Sorgen Sie sich nicht zu sehr um die Datentypen in diesem Beispiel, aber wenn es Probleme mit Datentypen gibt, dann wäre das auch gut zu wissen.

Der offensichtlichste ist, dass das Objekt bereits referenziert ist, so dass zwei Eigenschaften gleichzeitig auf der Anwendung leichter sind, oder?

    
Dann 24.03.2010, 08:42
quelle

2 Antworten

3

In Ihrem Beispiel sind sie gleich und sie sind eine Frage der persönlichen Präferenz. Aufgrund der verzögerten Ausführung von LINQ wird die Sammlung nur einmal durchlaufen.

Wenn Sie Ihre Ausdrücke mit einem oder Operator kombinieren möchten, können Sie nur die erste verwenden.

    
Jelle 24.03.2010, 08:48
quelle
0

Der erste wäre etwas schneller, da er den Overhead etwas reduziert. Ansonsten werden sie grundsätzlich genauso verarbeitet.

Ein bemerkenswerter Unterschied besteht jedoch darin, dass die Eigenschaft Color vor der Eigenschaft Age im zweiten Beispiel verglichen wird. Wenn Sie einen günstigeren Vergleich wünschen, um einen teureren zu schließen (so dass die Color Eigenschaft nur für die Elemente verglichen wird, für die der Age Vergleich gilt), sollten Sie den billigeren in den letzten Where Aufruf setzen :

%Vor%

In diesem Fall gibt es nicht viel Unterschied in den Kosten der Vergleiche, aber wenn man viel teurer ist als das andere, ist es gut zu wissen, in welcher Reihenfolge sie bewertet werden.

    
Guffa 24.03.2010 09:12
quelle

Tags und Links