Ergebnis der LINQ-Abfrage im Watch / Debugger anzeigen

7

Gibt es eine Möglichkeit, das Ergebnis einer LINQ-Abfrage in Visual Studio 2010 anzuzeigen? Wenn Sie die Abfrage als Watch-Ausdruck hinzufügen, wird "Expression darf keine Lambda-Ausdrücke enthalten" angezeigt.

In einigen Testcodes aggregiere ich die Gesamtsummen einer Reihe von Metriken für eine bestimmte Anzahl von Kindern und vergleiche die Summe mit ihrem Elternwert für die gleiche Metrik (tief verschachteltes if-else). Alle meine Fragen sind in den if-Anweisungen. Wie kann ich diese Werte anzeigen, ohne das Ergebnis einer lokalen Variablen zuzuweisen? Zuweisung verdoppelt meine Zeilenanzahl und bietet neben dem Debuggen hier keinen Vorteil. Hat jemand eine Arbeit um sie verwenden, um die Ergebnisse der LINQ-Abfragen im Debugger anzuzeigen?

    
evanmcdonnal 04.09.2013, 18:03
quelle

4 Antworten

7

Sie können derzeit keine Lambda-Ausdrücke in der Überwachungsliste in Visual Studio verwenden.

Es gibt ein paar Dinge, die Sie tun können:

  1. Erstellen Sie eine Methode, die das gewünschte Lambda aufruft, und legen Sie diese Methode fest rufe deine watch-Anweisung auf.

  2. Setzen Sie den gewünschten Lambda-Ausdruck auf eine Variable, und sehen Sie sich dann die Inhalt dieser Variablen. Beachten Sie, dass dies aufzählen wird durch den Ausdruck und kann Nebenwirkungen verursachen.

Ich würde mir vorstellen, dass dies auf der Liste der Feature-Anfragen für VS steht, aber MSFT hat es noch nicht gemacht. Hoffentlich hilft das in der Zwischenzeit.

    
Codeman 04.09.2013, 18:07
quelle
5

In Visual Studio 2015 können Sie Lambda-Ausdrücke debuggen (zum Zeitpunkt des Schreibens Vorschau ). Sie können Uhren mit Lambda-Ausdrücken usw. hinzufügen.

Expression Evaluator musste neu geschrieben werden, so dass viele Features fehlen: Remote-Debugging von ASP.NET, Deklarieren von Variablen im Direktfenster, Überprüfen von dynamischen Variablen usw. Auch Lambda-Ausdrücke, die Aufrufe von nativen Funktionen erfordern, werden derzeit nicht unterstützt. Alle Funktionen werden beendet, wenn VS2015 freigegeben wird.

    
Athari 12.11.2014 21:39
quelle
5

Ich grub diesen alten Thread für diejenigen aus, die nicht das Glück haben, VS 2015 zu benutzen und die immer noch unter dieser fehlenden Funktion in der vorherigen Version von VS leiden.

Es ist ein bisschen peinlich, Code nur für das Debuggen zu teilen.

Eine Alternative, die ich für Wo Abfragen verwenden möchte, ist DynamicQueryable .

Nehmen wir an, Sie haben eine Frage:

%Vor%

Dann können Sie mit DynamicQueryable eine Watch-Anweisung eingeben, die wie folgt aussieht:

%Vor%

Es ist ziemlich einfach zu schreiben (wieder für Where-Abfragen), und da dies eine Watch-Anweisung ist, recht schnell zu aktualisieren und nützlich für den Debug-Zweck. Denken Sie daran, immer eine ToList () oder ToArray () hinzuzufügen, um die Projektion automatisch in Ihrer Watch-Anweisung anzuwenden.

Für komplexe Select-Anweisungen würde ich denken, dass es nicht so praktisch wäre, aber trotzdem helfen könnte.

Ich würde auch empfehlen, ein Tool namens OzCode zu verwenden. Die letzte Version enthält die LINQ-Debug-Funktion, die ziemlich gut ist . Sie können den Status der Sammlung verfolgen, die auf jeder Ebene der LINQ-Anweisung geändert wird.

    
Seb T. 24.08.2016 15:43
quelle
2

Ich bin mir nicht sicher, ob Sie das meinen (vielleicht verstehe ich das falsch), aber ich kann die Ergebnisse meiner LINQ-Abfrage sehen, indem ich im Fenster Lokal die Ergebnisansicht meiner Abfragevariable expandiere.

Innerhalb dessen kann ich immer weiter expandieren und die Daten darin sehen:

    
Kevin 04.09.2013 18:33
quelle

Tags und Links