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?
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%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.
Hier ist eine Erweiterungsmethode, die ähnliche Teile jeder Abfrage ausschließt:
%Vor%Sie würden es so verwenden:
%Vor%Tags und Links c# linq refactoring