web-dev-qa-db-ja.com

VS 2013のイミディエイトウィンドウでLINQおよび/またはforeachを実行するにはどうすればよいですか?

イミディエイトウィンドウは、デバッグプロセス中に現在の状態を調べるときに非常に便利なツールです。 この投稿で のように、疑問符を使用することで、もう少しやることができることを学びました。

ただし、LINQクエリを実行する方法がまだわかりません(includelambda式)。また、foreachステートメントの実行に失敗しました。

次のステートメントを実行する場合:

?(things.Select(thing=>thing.Id);)
?(foreach(var thing in things);)

私はこれらのエラーが発生しています:

式にラムダ式を含めることはできません
無効な表現用語「foreach」

(方法)これらをイミディエイトウィンドウで実行できますか?

VS Gallery にもツールがありますが、VS05とVS08でのみ機能すると言われています。私はVS13および/またはVS15に適用可能なものを探しています。

18

Visual Studio 2015で利用可能な新機能によると、ラムダのデバッグのサポートがウォッチ/イミディエイトウィンドウで利用可能になりました。

デバッガーウィンドウでのラムダ式

C#およびVisual Basicの[ウォッチ]、[イミディエイト]、およびその他のデバッガーウィンドウでラムダ式を使用できるようになりました。

ソース:

Visual Studio 2015 RTM

12
Ric

VS2015では、ウォッチウィンドウとイミディエイトウィンドウでラムダ式を使用できます。

監視を追加するか、イミディエイトウィンドウに入力するだけです(デバッグ中およびthingsはスコープ内にあります)。

things.Select(thing => thing.Id);

結果のリストが表示されます。

this に関するブログです

4
Jamie Rees

残念ながら、immidiateウィンドウまたはwatchウィンドウからラムダを使用することは不可能に思われます。この技術的な理由は、おそらくlinqクエリが通常の正規表現に変換され、これらの2つのウィンドウで使用されるトリックの代わりに完全なコンパイル手順が何らかの形で必要になるためです。

thing=>thing.Id部分がラムダ式であることを知らなかった場合。

0
Roy T.