2

我想我之前在某个地方看到过一个where子句示例,它调用了一个给出bool结果的函数,但我再也找不到它了,所以我将概述我的问题。

我有一个收藏

Dictionary< string, KeyValuePair < int, int >>  

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

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

我欢迎任何建议,以尽量减少这项工作。

4

2 回答 2

11

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

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