2

whereしばらく前に、結果を返す関数を呼び出した句の例を見たと思いましたboolが、再び見つけることができないので、問題の概要を説明します。

私はコレクションを持っています

Dictionary< string, KeyValuePair < int, int >>  

stringキーのクエリが必要です。表面的には単純ですが、残念ながら文字列 (制御できない) は、グリッド セルのエンコードされた座標です。

Dictionaryクエリは、グリッドの特定の部分に該当するエントリを ( のタイプとして) 取得することです。関数呼び出しを配置するとcells.Where(c => isWithinArea(c.Key, area))コンパイルされますが、機能しません。関数が呼び出されることはありません。

最小限の手間でこれを機能させるための提案を歓迎します。

4

2 に答える 2

11

関数が呼び出されない最も可能性の高い理由は、「where-ing」しているシーケンスに要素がない場合、または列挙子をまったく呼び出していない場合です。foreachLINQ は遅延評価されます。つまり、指定した式は、またはを開始するまで実際には呼び出されませんToList()

于 2010-08-06T04:17:18.880 に答える
0
cells.Keys.Where(key => isWithinArea(key, area))
于 2010-08-06T12:27:40.197 に答える