Linq where子句问题

时间:2010-08-06 04:10:42

标签: c# linq where clause

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

我有一个集合

Dictionary< string, KeyValuePair < int, int >>  

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

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

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

2 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:0)

cells.Keys.Where(key => isWithinArea(key, area))
相关问题