Linq where子句问题

Big*_*fty 2 c# linq clause where

我以为我曾经看过某个地方的一个例子,where它调用了一个给出bool结果的函数,我再也找不到它了,所以我将概述我的问题.

我有一个集合

Dictionary< string, KeyValuePair < int, int >>  
Run Code Online (Sandbox Code Playgroud)

我希望在其中查询string密钥.在表面上很简单但不幸的是,字符串(我无法控制)是网格单元的编码坐标.

查询是检索Dictionary属于网格特定部分的条目(作为类型).放置函数调用cells.Where(c => isWithinArea(c.Key, area))编译但不起作用.该函数永远不会被调用.

我欢迎任何建议,以最小的努力使这项工作.

Rex*_*x M 11

函数永远不会被调用的最可能的原因是,如果你在"where-ing"的序列没有元素,或者你根本就没有调用枚举器.LINQ是惰性求值的,这意味着在你开始foreach或之前,实际上都没有调用你提供的表达式ToList().