2016-10-13 36 views
5

エラーCS1061 2015イミディエイトウィンドウ:「ICollectionを<>」「SelectMany」と拡張子なしのメソッド「SelectMany」タイプの最初の引数を受け入れるための定義が含まれていない「ICollectionを<> 'が見つかりました(使用しているディレクティブまたはアセンブリ参照がありません)LINQの拡張メソッド

Visual Studio 2015では、デバッグモードでの直接的なウィンドウでのlinqラムダ式の評価がサポートされています。私はProcess.GetProcesses()をフェッチしてコンソールアプリケーションでテストしました。直接ウィンドウに行き、.Selectまたは.Whereを書き始めます。それはうまく動作します。

しかし、自分のプロジェクトで同じことをすることはできません。

私のブレークポイントは、このラインである:F10を行う

return Dimensions.Values.SelectMany(dimension => dimension.Attributes) 
         .FirstOrDefault(dimensionAttribute => key.Equals(dimensionAttribute.Key)); 

に動作します。しかし、同じ表現を部分的に実行しようとすると、即時のウィンドウ、すなわちDimensions.Values.SelectMany(dimension => dimension.Attributes)に上記のエラーが発生します。

私はこれを間違った方法で評価しようとしていますか?私は何が欠けていますか?

+3

確かに..「Systen.Linqを使用していますか? –

+0

System.Linqを使用していますか? –

+1

@GiladGreen、@mww、はい私は 'System.Linq'を使用しています。私はあなたにその外側の 'namespace {}'とその上にあなたを教えなければなりません。私は明示的にそれが 'namespace {}'の中にないことを伝えたいので、これを言及しました。また、F10が機能しています。 – singsuyash

答えて

0

私はあなたにその理由がありません(私はイミディエイトウィンドウで似たような問題があります)、しかし、私はあなたが静的なクラスアクセスを介して拡張メソッドを呼び出すことができることがわかりません。あなたの場合、それは次のようになります:

Enumerable.FirstOrDefault(Enumerable.SelectMany(Dimensions.Values, dimension => dimension.Attributes),dimensionAttribute => key.Equals(dimensionAttribute.Key)); 
+0

これは素晴らしいとハックです。大好きです。 – Botonomous

+0

ありがとう@Lennart、これは動作します!私はすぐに目的のためにこのようなものが必要でした。私は少し長く航海することができます。しかし、私は私が尋ねた特定の質問の答えとしてこれを受け入れることができません。私たちが拡張メソッドを使う理由は、それらを連鎖できるようにするためです。それは2015年の対即時窓で働くはずのこの方法でしたか? – singsuyash

+0

@singsuyash異なる拡張メソッドを呼び出すことができることに注意してください。実際のコードは 'IQueryable 'であり、異なる拡張メソッドがあります。 – Maarten