Wie führe ich LINQ und / oder foreach im Direktfenster in VS 2013 aus?

8

Direktes Fenster ist fantastisch nützliche Werkzeuge, wenn der aktuelle Zustand während des Debugging-Prozesses untersucht wird. Ich habe gelernt, dass man mit dem Fragezeichen etwas mehr drin haben kann, wie in diesem Beitrag gezeigt .

Ich weiß jedoch immer noch nicht, wie ich dort LINQ-Abfragen ausführen soll ( einschließlich Lambda-Ausdrücke). Ich habe auch keine foreach Anweisung ausgeführt.

Beim Ausführen der folgenden Anweisungen:

%Vor%

Ich bekomme diese Fehler:

  

Ausdruck darf keine Lambda-Ausdrücke enthalten   Ungültiger Ausdrucksterm 'foreach'

(Wie) kann ich diese im Direktfenster ausführen?

Es gibt auch ein Tool in VS Gallery , aber es wird gesagt, dass es nur funktioniert VS05 und VS08, die die meisten Programmierer vor langer Zeit zurückgelassen haben. Ich suche nach etwas, das auf VS13 und / oder VS15 anwendbar ist.

    
Konrad Viltersten 22.10.2015, 09:54
quelle

3 Antworten

7

Gemäß den neuen Funktionen von Visual Studio 2015 ist die Unterstützung für das Debugging von Lambda jetzt im Watch / Instant-Fenster verfügbar:

  

Lambda-Ausdrücke in Debugger-Windows

     

Sie können nun Lambda-Ausdrücke in Watch, Immediate und   andere Debugger-Fenster in C # und Visual Basic.

Quelle:

Visual Studio 2015 RTM

    
Ric 22.10.2015, 10:02
quelle
3

In VS2015 können Sie Lambda- Ausdrücke im Überwachungsfenster und im unmittelbaren Fenster verwenden.

Fügen Sie einfach die Uhr hinzu oder tippen Sie im unmittelbaren Fenster ein (während Debugging und things im Gültigkeitsbereich sind):

%Vor%

und Sie erhalten eine Ergebnisliste.

Hier ist ein Blog über das

>     
Jamie Rees 22.10.2015 10:01
quelle
0

Leider scheint es unmöglich zu sein, Lambda's entweder aus dem direkten Fenster oder dem Beobachtungsfenster zu verwenden. Der technische Grund dafür ist vermutlich, dass Linq-Abfragen normalerweise in normale Ausdrücke konvertiert werden und dass dies irgendwie einen vollständigen Kompilierungsschritt erfordert, anstelle der Tricks, die von diesen beiden Fenstern verwendet werden.

Falls Sie nicht wussten, dass der thing=>thing.Id -Teil ein Lambda-Ausdruck ist.

    
Roy T. 22.10.2015 09:57
quelle