@LemanRass21

Почему аналогичная реализация через LINQ запрос не работает?

Здравствуйте.
Я похоже чего-то не понял про Predicate но я реально не догоняю почему вот этот код работает:
for (int i = 0; i < Beads.Count; i++)
            if (Vector3.Distance(Beads[i].position, pos) < 0.1f)
                return false;
        return true;


а этот, для меня кажущийся аналогичным - нет:
return Beads.Any(n => Vector3.Distance(n.position, pos) < 0.1f);


Буду безгранично благодарен за объяснения.
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
// Аналогично циклу с использованием Any
return !Beads.Any(n => Vector3.Distance(n.position, pos) < 0.1f);
// Можно с использованием All
return Beads.All(n => !Vector3.Distance(n.position, pos) < 0.1f);


В первом цикле возвращается false, если условие будет выполнено хотя бы раз. Any в этом случае вернёт true. Поэтому нужно применить инверсию. Также можно переписать операцию использую метод All.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы