2010-08-06 178 views
2

我以为我曾经在某个地方看过一个where子句的例子,它调用了一个给出bool结果的函数,但我找不到它,因此我将概述我的问题。Linq where子句问题

我有一个集合

Dictionary< string, KeyValuePair < int, int >> 
中,我想拥有的 string键查询

。在表面上很简单,但不幸的是字符串(我无法控制)是一个网格单元的编码坐标。

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

我欢迎任何建议,使这项工作至少大惊小怪。

+0

您必须发布代码。正如你所描述的,一切听起来都很好。 “ – mquander 2010-08-06 04:11:52

+0

”不起作用“ - 你必须描述它的作用,以及它与你想要做什么不同。 – 2010-08-06 04:19:56

回答

11

该函数从未被调用的最可能的原因是,如果您的“where-ing”没有元素的序列,或者根本不调用枚举器。 LINQ是懒惰评估的,这意味着您提供的任何表达式都不会被实际调用,直到您开始使用foreachToList()

+1

我猜这是后者。接得好。 – 2010-08-06 04:23:33

+0

是的,我敢打赌,后者正是这里的问题。 +1 – Pandincus 2010-08-06 04:27:29

0
cells.Keys.Where(key => isWithinArea(key, area))