Рассмотрим следующее:
bool invalidChildren = this.Children.Any(c => !c.IsValid());
Этот класс имеет коллекцию дочерних объектов, у которых есть метод IsValid ()
. Предположим, что метод IsValid ()
- это задача, интенсивно использующая процессор. После обнаружения первого дочернего объекта, где IsValid ()
равно false
, теоретически обработка может остановиться, потому что результат никогда не может стать истинным. Действительно ли LINQ to objects перестает оцениваться после первого IsValid () = false
(например, логического И) или продолжает оценивать все дочерние объекты?
Очевидно, я мог бы просто поместить это в цикл foreach и break при первом недопустимом результате, но мне просто интересно, достаточно ли умен LINQ to objects, чтобы сделать это.
EDIT: Спасибо за ответы, мне почему-то самому не пришло в голову поискать это в MSDN.