Прекращает ли LINQ to объекты обработку Any (), когда условие истинно?

Рассмотрим следующее:

bool invalidChildren = this.Children.Any(c => !c.IsValid());

Этот класс имеет коллекцию дочерних объектов, у которых есть метод IsValid () . Предположим, что метод IsValid () - это задача, интенсивно использующая процессор. После обнаружения первого дочернего объекта, где IsValid () равно false , теоретически обработка может остановиться, потому что результат никогда не может стать истинным. Действительно ли LINQ to objects перестает оцениваться после первого IsValid () = false (например, логического И) или продолжает оценивать все дочерние объекты?

Очевидно, я мог бы просто поместить это в цикл foreach и break при первом недопустимом результате, но мне просто интересно, достаточно ли умен LINQ to objects, чтобы сделать это.

EDIT: Спасибо за ответы, мне почему-то самому не пришло в голову поискать это в MSDN.

14
задан Carvellis 17 January 2013 в 13:16
поделиться