Wie wird dieser duplizierte LINQ-Code umgestaltet?

8

Ich versuche herauszufinden, wie dieser LINQ-Code schön umgestaltet werden kann. Dieser Code und anderer ähnlicher Code werden innerhalb derselben Datei sowie in anderen Dateien wiederholt. Manchmal sind die manipulierten Daten identisch und manchmal ändern sich die Daten und die Logik bleibt gleich.

Hier ist ein Beispiel einer duplizierten Logik, die auf verschiedenen Feldern verschiedener Objekte arbeitet.

%Vor%

Jeder hat eine gute Möglichkeit, das zu refaktorisieren?

    
Brendan Enrick 03.06.2010, 13:53
quelle

5 Antworten

10

In etwa so:

%Vor%

In Ihrem Beispiel könnten Sie es so nennen:

%Vor%

Wenn Sie FooDataItem geändert haben, um allgemeiner zu sein, wäre es einfacher.

    
mquander 03.06.2010, 14:09
quelle
3

Ich würde die Abfragesyntax dafür nicht verwenden, verwenden Sie die Methodenkette.

%Vor%

(geschrieben ohne Compiler usw.).

Ich persönlich würde es nicht umgestalten, da dies den Code weniger lesbar und verständlich machen würde.

    
Femaref 03.06.2010 14:03
quelle
2

Sie müssten vom Abfrageausdruck wechseln und alle Ihre Klauseln Where, Group by, Order by und Select in lambdas konvertieren. Sie könnten dann eine Funktion erstellen, die jede von ihnen als Parameter akzeptiert. Hier ist ein Beispiel:

%Vor%

Basierend auf diesem Code

%Vor%

...

%Vor%     
Anthony Pegram 03.06.2010 14:10
quelle
1

Ich denke, wenn Sie das umstrukturieren, wäre es schwieriger zu lesen als das, was Sie bereits haben. Alles, was ich mir vorstellen kann, ist entweder dynamisches Linq oder das Modifizieren oder Einkapseln von BarDto, um eine Art von spezialisiertem Element zu haben, das nur für die Gruppierung verwendet werden kann.

    
Dave Markle 03.06.2010 14:01
quelle
1

Hier ist eine Erweiterungsmethode, die ähnliche Teile jeder Abfrage ausschließt:

%Vor%

Sie würden es so verwenden:

%Vor%     
Bryan Watts 03.06.2010 14:38
quelle

Tags und Links