2010-08-06 9 views
2

Мне показалось, что я где-то видел пример where, который вызвал функцию, которая дала результат bool, и я не могу найти его снова, поэтому я опишу свою проблему.Linq where clause problem

У меня есть коллекция

Dictionary< string, KeyValuePair < int, int >> 

, в котором я хочу иметь запрос для ключа string. На поверхности, которая проста, но, к сожалению, строка (над которой я не контролирую) является закодированной координатой ячейки сетки.

Запрос на получение записей (как тип Dictionary), которые попадают в определенную часть сетки. Размещение вызова функции cells.Where(c => isWithinArea(c.Key, area)) компилируется, но не работает. Функция никогда не вызывается.

Я приветствовал бы любые предложения, чтобы сделать эту работу с минимумом суеты.

+0

Вам необходимо будет опубликовать код. Как вы это описываете, все звучит прекрасно. – mquander

+0

«не работает» - вам нужно будет описать, что он делает, и как это отличается от того, что вы хотите. –

ответ

11

Наиболее вероятные причины, по которым функция никогда не вызывается, были бы, если последовательность, в которой вы «находите», не имеет элементов, или вы никогда не вызываете перечислитель вообще. LINQ lazy-rated, что означает, что ни одно из выражений, которые вы предоставили, фактически вызывается до тех пор, пока вы не начнете foreach или ToList().

+1

Я предполагаю, что это последнее. Хороший улов. –

+0

Да, я держу пари, что последнее касается именно этой проблемы. +1 – Pandincus

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